Die Verwendung während oder bis zu warten, bis ein PID existiert nicht
Ich habe mit Bash zu warten, bis eine PID nicht mehr vorhanden ist. Ich habe versucht
#!/bin/bash
while [ kill -0 PID > /dev/null 2>&1 ]; do
//code to kill process
done
//code to execute after process is dead
sowie
#!/bin/bash
until [ ! kill -0 PID > /dev/null 2>&1 ]; do
//code to kill process
done
//code to execute after process is dead
Diese beiden Beispiele entweder nicht funktioniert, oder halten Sie auf der Schleife nach dem der Prozess beendet. Was mache ich falsch?
- Können Sie nicht einfach
wait "$PID"
? - Er möchte, dass die Rückkehr der PID war nicht ein Kind, das von der shell.
- Wenn der Prozess, den Sie beobachten, ist ein Kind-Prozess, gibt es mehrere Fallstricke. Siehe diesem Kommentar für details.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie einfach dabei sein:
Der loop-Bedingung testet den exit-status des letzten Befehls, in diesem Fall
kill
.Die Bedeutung der 'Letzte' ist, dass Sie schreiben konnte:
Diese zu tests der exit-status von
kill
(undkill
allein).kill -0
überprüft den Prozess. Es ist nicht gerade intuitiv...Auch Sie tun können, Unixe mit procfs (fast alle außer mac os)