pour lister les processus qui s'exécutent en arrière-plan, on peut taper: ps -ef
ou ps -aux
mais comment lister les processus qui sont suspendus, supposons que j'avais un processus au premier plan et juste suspendu (avec bg <jobid>
ou Ctrl+z
)
comment puis-je savoir quels sont les processus dans ce statut (suspendu)?
merci
Vous pouvez utiliser la commande intégrée bash jobs
pour afficher le statut des travaux en arrière-plan ou suspendus, par exemple.
démarrer et mettre en arrière-plan un processus; commencer et suspendre une seconde avec Ctrl+Z
$ sleep 100 & sleep 200
[1] 12444
^Z
[2]+ Stopped sleep 200
vérifier le statut de tous les emplois
$ jobs
[1]- Running sleep 100 &
[2]+ Stopped sleep 200
vérifier l'état des travaux suspendus uniquement
$ jobs -s
[2]+ Stopped sleep 200
Reportez-vous à la section JOB CONTROL
de man bash
ou à l'aide en ligne du shell help jobs
.
La sortie de ps
inclut l’état suivant:
$ 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
La colonne STAT
est l’état du processus. Cela peut être l’un des (à partir de 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
Vous recherchez donc des processus dont l'état est affiché sous la forme T
name__. Pour afficher uniquement ces processus, vous pouvez analyser la sortie ps
pour eux:
ps aux | awk '$8=="T"'
Parfois, des caractères supplémentaires peuvent être ajoutés au champ d'état (en fonction des options utilisées), ce qui peut être une approche plus sûre:
ps aux | awk '$8~/T/'