Фоновые процессы - это процессы, которые являются членами группы процессов, которая не является приоритетной группой процессов на их управляющем терминале .
Соответствующие поля из /proc/PID/stat
:
(5) pgrp %d
The process group ID of the process.
(8) tpgid %d
The ID of the foreground process group of the control‐
ling terminal of the process.
Таким образом, эти поля будут разными для фонового процесса.Также полезны (3) state
, (7) tty_nr
и (6) session
.
(нумерация полей основана на 1)
Будет напечатано следующее (при запуске из интерактивной оболочки с управлением заданиямивключено) все не остановленные фоновые процессы из текущего сеанса:
awk -vsid=$$ '$6==sid && $3!="T" && $5!=$8 {print $1, $2}' /proc/[0-9]*/stat
Для простоты предполагается, что имя процесса (второе поле в скобках) не содержит пробелов;вам придется справиться с этим, сначала разделив строку в скобках, а затем на пробел.
Также обратите внимание, что это также приведет к печати процессов, запущенных из подоболочек, которых нет в таблице заданий оболочки (например, * 1025).*).