cette question fait suite à: comment suspendre et reprendre les processus
J'ai démarré Firefox depuis une session bash dans gnome-terminal.
L'arbre de processus ressemble à ceci:
$ 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
Quand je frappe CTRL+Zen bash, cela suspendra Firefox. Lorsque j'émets la commande bg(ou fg), elle reprendra Firefox. C'est comme prévu.
Lorsque j'émets la commande kill -s SIGTSTP 27980dans un autre terminal, il imprimera la ligne [1]+ Stopped firefoxdans le premier terminal (comme lorsque je frappe CTRL+Z), mais il ne suspend pas Firefox. Je suppose que cela suspend uniquement le script shell.
Lorsque j'émets la commande kill -s SIGTSTP 27989(notez le PID) dans un autre terminal, il suspendra Firefox. Le premier terminal n'en prend pas note.
Comment bash suspend-il l'intégralité de l'arborescence des processus? traverse-t-il simplement l'arbre et SIGTSTP tous les enfants?
pgidà votre pscommande pour voir les groupes de processus dont parle @geekosaur.