如何列出所有后台进程?

hal*_*hal 8 ps jobs background-process

是否可以使用该ps命令列出所有正在运行的后台进程,或者是获取该命令后台进程列表的唯一选项jobs

小智 8

jobs命令将显示在当前 shell 中启动的任何后台作业,通常是通过使用&操作符 或^Z bg(例如sleep 10 &)启动后台任务。

如果您想查看系统上运行的所有后台进程,您可以使用ps -e, 或ps -eF来获取一些其他详细信息。

要获取有关命令能够执行的操作的更多信息,您可以运行几乎总是运行man ps (替换ps为任何命令)以获取包含大量信息的手册页。


Sté*_*las 7

“后台进程”通常指终端作业控制。这将是进程组中的进程不是其控制终端设备的前台进程组。

procps在实施了 的Linux 系统上ps,您可以通过以下方式找到它们:

ps -eo pid,pgid,tpgid,args | awk 'NR == 1 || ($3 != -1 && $2 != $3)'
Run Code Online (Sandbox Code Playgroud)

我们在哪里查找tpgid(终端前台进程组 id)不是-1(具有控制终端的进程)的进程,并且它们的进程组 id 不是 tpgid。

请注意,它还包括当前正忙于等待前台作业的 shell(包括如果在终端的前台运行则运行该管道的 shell),因为它们会将这些作业置于前台,因此根据定义他们自己在后台。