questa domanda è il seguito di: Come sospendere e riprendere i processi
Ho avviato Firefox da una sessione bash in gnome-terminal.
L'albero del processo è simile al seguente:
$ ps -e -o pid,ppid,cmd -H
1828 1 gnome-terminal
26677 1828 bash
27980 26677 /bin/sh /usr/lib/firefox-3.6.15/firefox
27985 27980 /bin/sh /usr/lib/firefox-3.6.15/run-mozilla.sh /usr/lib/firefox-3.6.15/firefox-bin
27989 27985 /usr/lib/firefox-3.6.15/firefox-bin
28012 27989 /usr/lib/firefox-3.6.15/plugin-container /usr/lib/adobe-flashplugin/libflashplayer.so 27989 plugin true
Quando colpisco CTRL+Z
bash, sospenderà Firefox. Quando invio il comando bg
(o fg
) riprenderà Firefox. Questo è come previsto.
Quando invio il comando kill -s SIGTSTP 27980
in un altro terminale, verrà stampata la riga [1]+ Stopped firefox
nel primo terminale (proprio come quando ho colpito CTRL+Z
), ma non sospende Firefox. Suppongo che sospenda solo lo script della shell.
Quando invio il comando kill -s SIGTSTP 27989
(notare il PID) in un altro terminale, sospenderà Firefox. Il primo terminale non ne prende atto.
In che modo bash sospende l'intero albero dei processi? attraversa semplicemente l'albero e SIGTSTP tutti i bambini?
pgid
al tuo ps
comando per vedere i gruppi di processi di cui parla @geekosaur.