для списка процессов, которые работают в фоновом режиме можно ввести: ps -ef
или ps -aux
но как перечислить процессы, которые приостановлены, скажем, я имел некоторый процесс на переднем плане и просто приостановил (любой с bg <jobid>
или Ctrl+z
)
как я узнаю то, что процессы в том (приостановленном) состоянии?
спасибо
Вывод ps
включает состояние:
$ ps aux | head -n2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 200892 5132 ? Ss Mar04 0:20 /sbin/init
STAT
столбец является состоянием процесса. Это может быть одним из (от man ps
):
Here are the different values that the s, stat and state output
specifiers (header "STAT" or "S") will display to describe the state of a process:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped by job control signal
t stopped by debugger during the tracing
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
Так, Вы ищете процессы, состояние которых показывается T
. Для наблюдения только тех процессов можно проанализировать эти ps
вывод для них:
ps aux | awk '$8=="T"'
Иногда, дополнительные символы могут быть добавлены к полю состояния (в зависимости от опций, которые Вы используете), таким образом, это могло бы быть более безопасным подходом:
ps aux | awk '$8~/T/'
Можно использовать удар jobs
встроенный для наблюдения состояния заданий, которые являются фоном или приостановленный, например.
запустите и фон один процесс; запустите и приостановите секунду с Ctrl+Z
$ sleep 100 & sleep 200
[1] 12444
^Z
[2]+ Stopped sleep 200
проверьте состояние всех заданий
$ jobs
[1]- Running sleep 100 &
[2]+ Stopped sleep 200
проверьте состояние только приостановленных заданий
$ jobs -s
[2]+ Stopped sleep 200
Посмотрите JOB CONTROL
раздел man bash
, или справка оболочки онлайн help jobs
.