kill -TERM -PID
soll PID und alle seine untergeordneten Prozesse töten.
aber das funktioniert nicht unter openSUSE, es sagt mir immer, dass kein solcher Prozess -PID egal welche PID ich benutze.
Wenn die negative PID-Option von dieser bestimmten Version von kill nicht unterstützt wird, wie kann eine Gruppe von Prozessen am besten beendet werden?
Hintergrund:
Ich habe ein Shell-Skript ausgeführt. Innerhalb des Skripts verwende ich wget, um Dinge herunterzuladen. Das Skript ist also der übergeordnete Prozess, wget ist der untergeordnete Prozess. Ich möchte sie beide mit kill -TERM -PID_OF_SCRIPT töten
process
kill
process-groups
Dave.d
quelle
quelle
pid
Argument bezieht sich auch auf die Prozessgruppen-ID .PID
. Verwenden Sieps -j
diese Option, um die Prozessgruppen-IDs anzuzeigen.Antworten:
Sagt es "keine solche PID" oder gibt es einen Fehler - wie in funktioniert das?
Beachten Sie auch gemäß (betonen Sie meinen)
Mann 1 :
Mann 2 :
Mann 3 :
Wie in, nicht PID, sondern Prozessgruppen-ID.
Sonst kannst du vielleicht so viel Spaß mit / proc / [pid] / stat haben
pkill -TERM -g PGRP
quelle
kill --
dasDie Fehlermeldung
/bin/kill: -23958: No such process
kann auch auf die Tatsache zurückzuführen sein , dass die pid23958
ist kein pgid (Prozessgruppen - ID - Nummer)!Dies kann beispielsweise der Fall sein, wenn Sie versuchen, eine Hintergrundhell (oder einen Befehl) in einem Skript zu
$!
beenden, das fälschlicherweise als pgid verwendet wird. In einer Jobsteuerungs-fähigen Shell$!
kann sie jedoch als pgid verwendet werden (siehe: Warum lebt der untergeordnete Prozess noch, nachdem der übergeordnete Prozess unter Linux beendet wurde? ).quelle
Sie können die "pkill" - oder die "killtree" -Lösung verwenden, die in diesem Thread auf anderen StackExchange-Sites angezeigt wird :)
/programming/392022/best-way-to-kill-all-child-processes
quelle
Dies hat möglicherweise damit zu tun, dass Sie den in der Shell integrierten Kill verwenden und nicht die Binärdatei. Versuchen Sie, diese zu verwenden
Wenn es funktioniert, würde ich vorschlagen, zu überprüfen, ob Ihre Shell die Prozessgruppenfunktion einer neueren Version hinzugefügt hat. Oder verwenden Sie einfach die Binärdatei.
quelle
Wenn das zugrunde liegende Betriebssystem Busybox verwendet und daher, sagt es
Error: kill: bad signal name '-'
, ist es höchstwahrscheinlich ein Problem mit--
.Sie müssen angeben,
kill -TERM -- -[gpid]
anstatt nurkill -- -[gpid]
. TERM ist das Standardsignal.Ich weiß nicht warum.
quelle