![如何列出所有后台进程?](https://linux22.com/image/205633/%E5%A6%82%E4%BD%95%E5%88%97%E5%87%BA%E6%89%80%E6%9C%89%E5%90%8E%E5%8F%B0%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
是否可以使用该ps
命令列出所有正在运行的后台进程,或者是获取该命令后台进程列表的唯一选项jobs
?
答案1
该命令将显示在当前 shell 中启动的任何后台作业,通常是通过使用操作符 或(例如)jobs
启动后台任务。&
^Z bg
sleep 10 &
如果您想查看系统上运行的所有后台进程,您可以使用ps -e
, 或ps -eF
来获取一些其他详细信息。
要获取有关命令能够执行的操作的更多信息,您可以运行几乎总是运行man ps
(替换ps
为任何命令)以获取包含大量信息的手册页。
答案2
“后台进程”通常指终端作业控制。这将是进程组中的进程不是其控制终端设备的前台进程组。
procps
在实施了 的Linux 系统上ps
,您可以通过以下方式找到它们:
ps -eo pid,pgid,tpgid,args | awk 'NR == 1 || ($3 != -1 && $2 != $3)'
我们在哪里查找tpgid
(终端前台进程组 id)不是-1
(具有控制终端的进程)的进程,并且它们的进程组 id 不是 tpgid。
请注意,它还包括当前正忙于等待前台作业的 shell(包括如果在终端的前台运行则运行该管道的 shell),因为它们会将这些作业置于前台,因此根据定义他们自己在后台。