如何按脚本名称列出正在运行的 bash 脚本?

Eri*_*met 7 command-line bash scripts process ps

psbash作为进程的名称返回......我想要shell脚本的名称。

例如,如果我的脚本是TestEric.sh,我想列出当前正在运行的该脚本的实例数。

Byt*_*der 9

这里的问题是ps默认情况下只在其输出中显示基本命令,而不是包括参数的整个命令行。

如果您使用 启动脚本bash TestEric.sh,则基本命令是bash. 如果您将其作为TestEric.sh(可能包括其路径)运行,则基本命令将是该命令而不是 bash。


您可以轻松地使用pgrep而不是ps列出按名称过滤的进程。它有一个-f标志,使其与整个命令行而不是基本命令匹配给定的模式。

-a标志使其在其输出中显示整个命令行以用于调试目的,而不仅仅是 PID。一旦你验证它有效,你可以/应该在你的脚本中再次删除它。

尝试这个:

pgrep -f -a TestEric.sh
Run Code Online (Sandbox Code Playgroud)

您可以稍后wc通过计算pgrep输出行来计算使用的进程:

pgrep -f TestEric.sh | wc -l
Run Code Online (Sandbox Code Playgroud)


小智 2

你可以尝试跑步ps u。从手册页中, u 选项对应的display user-oriented format将显示用于运行脚本的 shell 和脚本本身的名称。