如何确定进程是否在终端中看不见?

ben*_*tic 3 process terminal

例如,如果我输入 ping one.com,该进程将继续运行 - 如果我想停止该进程,我可以输入 Ctrl C,如果我没有记错,它将完全终止该进程。如果相反,我用 Ctrl Z 停止它,该进程是否仍然可以在某种程度上在后台运行?如何发现进程正在运行但在终端屏幕上看不到的情况?谢谢。

Mat*_*ath 7

使用jobs内置工具查看当前 shell 的运行任务。

$ ping google.com >/dev/null 2>&1 &
[1] 32406

$ jobs
[1]+  Running                 ping google.com > /dev/null 2>&1 &

$ ping google.com
[...]
^Z
[2]+  Stopped                 ping google.com

$ jobs
[1]-  Running                 ping google.com > /dev/null 2>&1 &
[2]+  Stopped                 ping google.com
Run Code Online (Sandbox Code Playgroud)

jobs -p终止所有正在运行的作业,您可以利用which 列出所有作业的 pid。

$ for job in $(jobs -p); do kill $job; wait $job; done
Run Code Online (Sandbox Code Playgroud)

进一步阅读:http : //www.tldp.org/LDP/abs/html/x9644.html