hal Asked: 2022-05-10 06:46:52 +0800 CST2022-05-10 06:46:52 +0800 CST 2022-05-10 06:46:52 +0800 CST 如何列出所有后台进程? 772 是否可以使用命令列出所有正在运行的后台进程ps,或者是获取后台进程列表的唯一选项jobs? background-process ps 2 个回答 Voted Best Answer Stéphane Chazelas 2022-05-10T07:15:58+08:002022-05-10T07:15:58+08:00 “后台进程”通常是指终端作业控制。那将是进程组中的进程,这些进程组不是其控制终端设备的前台进程组。 在procps实现 的Linux 系统上ps,您可以通过以下方式找到它们: ps -eo pid,pgid,tpgid,args | awk 'NR == 1 || ($3 != -1 && $2 != $3)' 我们在哪里寻找tpgid(终端前台进程组 id)不是-1的进程(具有控制终端的进程)并且它们的进程组 id 不是 tpgid。 请注意,它还将包括当前正忙于等待前台作业的 shell(包括如果在终端中在前台运行时运行该管道的那个),因为它们会将这些作业置于前台,因此根据定义自己在后台。 Jeremy Meadows 2022-05-10T07:03:06+08:002022-05-10T07:03:06+08:00 该jobs命令将显示在当前 shell 中启动的任何后台作业,通常通过使用&操作员或^Z bg(例如sleep 10 &)启动后台任务。 如果您想查看系统上运行的所有后台进程,您可以使用ps -e, 或ps -eF获取一些额外的详细信息。 要获取有关命令能够做什么的更多信息,您几乎可以运行 run man ps (替换ps为任何命令)以获取包含大量信息的手册页。
“后台进程”通常是指终端作业控制。那将是进程组中的进程,这些进程组不是其控制终端设备的前台进程组。
在
procps
实现 的Linux 系统上ps
,您可以通过以下方式找到它们:我们在哪里寻找
tpgid
(终端前台进程组 id)不是-1
的进程(具有控制终端的进程)并且它们的进程组 id 不是 tpgid。请注意,它还将包括当前正忙于等待前台作业的 shell(包括如果在终端中在前台运行时运行该管道的那个),因为它们会将这些作业置于前台,因此根据定义自己在后台。
该
jobs
命令将显示在当前 shell 中启动的任何后台作业,通常通过使用&
操作员或^Z bg
(例如sleep 10 &
)启动后台任务。如果您想查看系统上运行的所有后台进程,您可以使用
ps -e
, 或ps -eF
获取一些额外的详细信息。要获取有关命令能够做什么的更多信息,您几乎可以运行 run
man ps
(替换ps
为任何命令)以获取包含大量信息的手册页。