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+Zbash, sospenderà Firefox. Quando invio il comando bg(o fg) riprenderà Firefox. Questo è come previsto.
Quando invio il comando kill -s SIGTSTP 27980in un altro terminale, verrà stampata la riga [1]+ Stopped firefoxnel 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?
pgidal tuo pscomando per vedere i gruppi di processi di cui parla @geekosaur.