Ps
如何列出所有後台程序?
是否可以使用命令列出所有正在執行的後台程序
ps
,或者是獲取後台程序列表的唯一選項jobs
?
“後台程序”通常是指終端作業控制。那將是程序組中的程序,這些程序組不是其控制終端設備的前台程序組。
在
procps
實現 的Linux 系統上ps
,您可以通過以下方式找到它們:ps -eo pid,pgid,tpgid,args | awk 'NR == 1 || ($3 != -1 && $2 != $3)'
我們在哪裡尋找
tpgid
(終端前台程序組 id)不是-1
的程序(具有控制終端的程序)並且它們的程序組 id 不是 tpgid。請注意,它還將包括目前正忙於等待前台作業的 shell(包括如果在終端中在前台執行,則從其中執行該管道的 shell),因為它們會將這些作業置於前台,因此根據定義自己在後台。