![如何找到正在休眠的特定 shell 脚本的 PID?](https://linux22.com/image/203332/%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E6%AD%A3%E5%9C%A8%E4%BC%91%E7%9C%A0%E7%9A%84%E7%89%B9%E5%AE%9A%20shell%20%E8%84%9A%E6%9C%AC%E7%9A%84%20PID%EF%BC%9F.png)
我知道我可以用来pgrep -fl example.sh
查找脚本的 PID ,但是如果类似于以下内容,则example.sh
这不起作用:example.sh
(while true; do
sleep 5
done) &
运行./example.sh
然后pgrep -fl example.sh
不返回任何输入。我如何找到example.sh
它休眠时的PID?
答案1
您可能已经注意到您的example.sh
脚本立即退出。这是因为在这种情况下,sleep
命令通过 发送到后台&
。
在按顺序执行下一个命令之前,您的脚本不会等待sleep
完成。
sleep
在这种情况下将无法按预期方式工作(作为延迟)。
绝对没有理由sleep
在后台运行。
笔记: pgrep -fl processname
不仅会输出PID,还会输出进程名称
-f, --full
The pattern is normally only matched against the process name. When -f is set, the full command line is used.
-l, --list-name
List the process name as well as the process ID. (pgrep only.)