Bash scheint keine Zombies zu erschaffen. Es sieht so aus, als würden die Prozesse sofort geerntet, wenn sie getötet werden.
Kann ich Bash zu Zombies machen?
Warum ich frage:
Ich möchte in der Lage sein, einen untergeordneten Prozess sicher zu beenden oder ihn sicher zu beenden kill -9
, wenn er nicht innerhalb eines bestimmten Zeitraums stirbt, aber ich möchte nicht versehentlich einen Prozess zappen, der nicht mein untergeordneter Prozess ist. Zombie-Prozesse machen es normalerweise sehr einfach und rennsicher.
unshare
auf, um einen PID-Namespace zu erstellen, damit innerhalb dieses Prozessbaums die externen Prozesse isoliert und nicht zugänglich sind.kill -KILL %n
won
ist die Jobnummer usw.), anstatt zu versuchen, sie zu umgehen.timeout
? ": Haben Sie den Befehl in Betracht gezogen ?Antworten:
So erstellen Sie einen Zombie-Prozess:
Dadurch wird die Shell ersetzt,
sleep 1
mit der/bin/sleep 10
dersleep 1
Prozess nicht beendet wird. Daher wird 10 Sekunden lang ein Zombie erstellt.Ich bin mir nicht sicher, was Sie von einem Zombie-Prozess erwarten. Ein Zombie-Prozess war bereits tot, man kann ihn nicht töten.
Eigentlich können Sie Zombie-Prozesse verschwinden lassen, aber indem Sie die Eltern töten, nicht die Zombie-Prozesse selbst.
quelle
Nicht so interessante Antwort:
quelle
$BASHPID
ist ,$$
denke ich.$BASHPID
ist nicht dasselbe$$
. Versuchen Sie folgenden Code :echo $$ $BASHPID ;echo $(echo $$ $BASHPID)
. Weitere Informationen finden Sie inman bash
.