Esta pergunta é uma continuação de: Como suspender e retomar processos
Eu iniciei o firefox a partir de uma sessão do bash no gnome-terminal.
A árvore do processo é assim:
$ 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 eu bato CTRL+Z
no bash, ele suspende o firefox. Quando eu emito o comando bg
(ou fg
), ele será reiniciado no Firefox. Isto é como esperado.
Quando eu emito o comando kill -s SIGTSTP 27980
em outro terminal, ele imprime a linha [1]+ Stopped firefox
no primeiro terminal (como quando bati CTRL+Z
), mas não suspende o firefox. Presumo que apenas suspenda o script de shell.
Quando eu emito o comando kill -s SIGTSTP 27989
(observe o PID) em outro terminal, ele suspende o firefox. O primeiro terminal não toma nota disso.
Como o bash suspende toda a árvore do processo? apenas atravessa a árvore e SIGTSTP todas as crianças?
pgid
ao seu ps
comando para ver os grupos de processos sobre os quais o @geekosaur está falando.