この質問はフォローアップです:プロセスを中断および再開する方法
私はgnome-terminalのbashセッションからfirefoxを起動しました。
プロセスツリーは次のようになります。
$ 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でヒットすると、firefoxが中断されます。コマンドbg
(またはfg
)を発行すると、firefoxが再開されます。これは予想どおりです。
kill -s SIGTSTP 27980
別のターミナルでコマンドを発行する[1]+ Stopped firefox
と、最初のターミナルで行を印刷します(ちょうどヒットしたときのようにCTRL+Z
)が、firefoxを中断しません。シェルスクリプトを一時停止するだけだと思います。
kill -s SIGTSTP 27989
別の端末でコマンド(PIDに注意)を発行すると、firefoxが中断されます。最初の端末はこれに注意しません。
bashはプロセスツリー全体をどのように一時停止しますか?ツリーとすべての子をSIGTSTPだけトラバースしますか?
pgid
には、ps
コマンドに追加する必要があります。