bu soru aşağıdakilerin bir takipçisidir: Süreçlerin askıya alınması ve sürdürülmesi
Gnome terminalindeki bir bash oturumundan firefox'u başlattım.
İşlem ağacı şöyle görünür:
$ 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'a vurduğumda , firefox'u askıya alacak. Komutu verdiğimde bg
(veya fg
) firefox'a devam edecek. Bu beklendiği gibi.
Komutu kill -s SIGTSTP 27980
başka bir terminalde yayınladığımda, [1]+ Stopped firefox
ilk terminaldeki satırı yazdırır (tıpkı vurduğumda olduğu gibi CTRL+Z
), ancak firefox'u askıya almaz. Sadece kabuk betiğini askıya aldığını varsayıyorum.
kill -s SIGTSTP 27989
Başka bir terminalde komutu verdiğimde (PID'ye dikkat edin), firefox'u askıya alacaktır. İlk terminal bunu dikkate almaz.
Bash tüm süreç ağacını nasıl askıya alır? sadece ağacı ve SIGTSTP'yi tüm çocukları mı geçiyor?
pgid
için ps
komutunuza eklemelisiniz .