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

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

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

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

答案1

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

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


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

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

尝试这个:

pgrep -f -a TestEric.sh

稍后您可以wc通过计算输出行来计算进程数pgrep

pgrep -f TestEric.sh | wc -l

答案2

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

答案3

!#/bin/bash显然,如果我在文件开头添加...会有所帮助,然后脚本的名称就会出现在ps报告中。

相关内容