如何列出所有后台进程?

如何列出所有后台进程?

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

答案1

该命令将显示在当前 shell 中启动的任何后台作业,通常是通过使用操作符 或(例如)jobs启动后台任务。&^Z bgsleep 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),因为它们会将这些作业置于前台,因此根据定义他们自己在后台。

相关内容