如何确定进程是否正在终端中运行?

如何确定进程是否正在终端中运行?

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

答案1

使用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

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

$ for job in $(jobs -p); do kill $job; wait $job; done

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

答案2

运行ps -aux | grep "processname"以查看进程是否正在运行

运行kill "processID"杀死指定进程,PID是上一个命令中与目标进程一致的第二组数字

运行killall "processname"以终止具有定义名称的所有进程

相关内容