如何找到正在休眠的特定 shell 脚本的 PID?

如何找到正在休眠的特定 shell 脚本的 PID?

我知道我可以用来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.)

相关内容