从 bash 中的给定位置检查哪些进程是 运行

Check which processes are running from a given location in bash

我有以下目录结构:

./folder1
  -- file1.py
  -- file2.py

./folder2
  -- file3.py
  -- file4.py

etc...

useless_file_a.py
useless_file_b.py

我正在尝试编写一个 bash 脚本来了解 file[i].py 个进程中的哪些是 运行。通过 运行,我的意思是查看作为 ps -elf 命令结果显示的进程。

我的想法是:

  1. 遍历那些 folder[i] 并列出可用的 .py 文件。对于这一步,我可以使用:

    find . -type f -name "*.py" -mindepth 2

  2. 检查 运行 个与在 1.

    中找到的名称匹配的进程

    我知道 ps -elf 命令,我想 link 它进入第 1 步。

我正在努力想出最后一步的办法。

如果其中一个 .py 脚本不是 运行,此脚本的全部意义在于提醒我。由于可以有很多脚本和很多文件夹,我想自动化这个过程。

注意useless_file_*.pypwd中,与我无关。

通常不可能查明“脚本是否为 运行”。此信息未存储在任何地方。

您可以检查作为文件名的字符串是否在进程的命令行参数中:

for f in */*.py; do
   pgrep -f "$(basename "$f")"
done