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
报告中。