BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Prozess und dessen Kind-Prozesse beenden

Mit Hilfe von pslist können alle Kind-Prozesse eines Prozesses angezeigt werden und allenfalls ein Signal an alle diese Prozesse gesendet werden. Im FreeBSD-Portbaum findet manpslist unter sysutils/pslist:

# cd /usr/ports/sysutils/pslist && make install clean

Übergibt man eine Prozess-ID an pslist, so werden die Prozess-IDs aller Kind-Prozesse angezeigt:

# pslist 4816
4816 sh 4817 4818 4819
# pstree -p 4816
-+= 00001 root /sbin/init --
 \-+- 02761 root /usr/local/bin/xdm -nodaemon ttyv8
   \-+= 02817 root xdm: :0 (xdm)
     \-+= 02829 beat fluxbox
       \-+= 03854 beat /bin/csh -c xterm
         \-+- 03861 beat xterm
           \-+= 03863 beat csh
             \-+= 04816 beat /bin/sh ./test
               \-+- 04817 beat /bin/sh ./test
                 \-+- 04818 beat /bin/sh ./test
                   \--- 04819 beat sleep 60

Sendet man nun ein SIGTERM-Signal an den Prozess welcher die Kind-Prozesse gestartet hat, so laufen die Kind-Prozesse weiter, werden jedoch Kind-Prozesse des init Prozesses:

# kill 4816
# pstree
-+= 00001 root /sbin/init --
[...]
 \-+- 04817 beat /bin/sh ./test
   \-+- 04818 beat /bin/sh ./test
     \--- 04819 beat sleep 60

Soll das SIGTERM-Signal an einen Prozess und allen seinen Kind-Prozessen  gesendet werden kann rkill verwendet werden:

# rkill 4816

Möchte man ein anderes Signal als das SIGTERM-Signal verwenden, so kann auch dies an rkill übergeben werden. Im folgenden Beispiel wid das SIGKILL-Signal an alle Prozesse gesendet:

# rkill -9 4816

Mehr Informationen zu pslist und rkill findet man in der Manpage pslist(1).

 Permalink