2 Stimmen

Wie kann man mehrere Kindprozesse beenden, die von demselben Elternprozess erzeugt wurden?

Zu Testzwecken führe ich mehrere (wenige) 100s ) expect Skripte. Alle Skripte werden von demselben Elternteil gestartet (manchmal ist dessen pid 1 ). Gibt es eine Möglichkeit, sie auf einen Schlag zu töten, ohne ihren Quellcode zu ändern und ohne den übergeordneten Prozess selbst zu beenden ? Etwa so:

[root@devx-csb4 expect_scripts] kill -9 <child of pid=...>

Alle Expect-Skripte sind identisch, werden aber in einer Schleife ausgeführt; siehe das Folgende ps -ef | grep milind

root     19879     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13265 55650
root     19889     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13266 55660
root     19899     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13267 55670
root     19930     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13268 55680
root     19940     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13269 55690
root     19973     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13270 55700
root     19983     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13271 55710
root     19993     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13272 55720
root     20024     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13273 55730
root     20034     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13274 55740
root     20067     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13275 55750
root     20104     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13276 55760
root     20114     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13277 55770
root     20145     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13278 55780
root     20155     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13279 55790
root     20188     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13280 55800
root     20198     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13281 55810
root     20208     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13282 55820
root     20239     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13283 55830
root     20249     1  0 20:27 pts/9    00:00:00 /usr/bin/expect /root/pjproject-1.0.3/pjsip-apps/bin/expect_scripts/milind.exp 13284 55840

2voto

Charlie Martin Punkte 106684
  1. Geben Sie ihnen allen einen Namen mit einer gemeinsamen Teilzeichenkette und verwenden Sie pkill(1)

  2. Verwenden Sie ps, ermitteln Sie die ID des übergeordneten Prozesses und beenden Sie alle PIDs, die mit dem übergeordneten Prozess verbunden sind. Dies ist unerwünscht, wenn der Elternprozess 1 ist. Beachten Sie, dass Ihre Vorstellung von kill -9 pid= leidet unter dem gleichen Problem - alle System-Daemon-Prozesse sind Kinder von PID 1.

  3. Führen Sie eine Liste mit den Namen der zu erwartenden Skripte; führen Sie ps aus und suchen Sie für jeden Namen in Ihrer Liste die PID; beenden Sie es.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X