Eri*_*met 7 command-line bash scripts process ps
psbash作为进程的名称返回......我想要shell脚本的名称。
例如,如果我的脚本是TestEric.sh,我想列出当前正在运行的该脚本的实例数。
这里的问题是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)