це питання є наслідком: Як призупинити та відновити процеси
Я запустив firefox з bash сесії в gnome-терміналі.
Дерево процесу виглядає так:
$ 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
Коли я влучу CTRL+Z
в баш, він призупинить firefox. Коли я видаю команду bg
(або fg
), вона відновиться firefox. Це як очікувалося.
Коли я видаю команду kill -s SIGTSTP 27980
в іншому терміналі, вона надрукує рядок [1]+ Stopped firefox
у першому терміналі (як і коли я натиснув CTRL+Z
), але це не призупиняє firefox. Я вважаю, що це лише призупиняє сценарій оболонки.
Коли я видаю команду kill -s SIGTSTP 27989
(зверніть увагу на PID) в іншому терміналі, вона призупинить firefox. Перший термінал цього не враховує.
Як bash призупиняє все технологічне дерево? це просто перетинає дерево і SIGTSTP всіх дітей?
pgid
до своєї ps
команди, щоб побачити групи процесів @geekosaur.