이 질문은 후속 작업입니다. 프로세스를 일시 중단하고 다시 시작하는 방법
그놈 터미널의 bash 세션에서 파이어 폭스를 시작했습니다.
프로세스 트리는 다음과 같습니다.
$ 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
bash에 충돌하면 파이어 폭스가 일시 중단됩니다. 명령 bg
(또는 fg
)을 실행하면 firefox가 다시 시작됩니다. 이것은 예상대로입니다.
kill -s SIGTSTP 27980
다른 터미널 에서 명령을 실행 [1]+ Stopped firefox
하면 첫 번째 터미널에서 줄 을 인쇄 CTRL+Z
하지만 (을 누르는 것처럼 ) 파이어 폭스를 중단하지 않습니다. 쉘 스크립트 만 일시 중단한다고 가정합니다.
kill -s SIGTSTP 27989
다른 터미널에서 명령 (PID를 기록하십시오)을 발행하면 파이어 폭스가 일시 중단됩니다. 첫 번째 터미널은이 점에 유의하지 않습니다.
bash는 전체 프로세스 트리를 어떻게 일시 중단합니까? 그것은 단지 나무를 가로 지르고 SIGTSTP 모든 아이들을 통과합니까?
pgid
당신에 ps
대해 이야기 @geekosaur 프로세스 그룹을 참조하는 명령.