Wie kann ich den übergeordneten Shell-Skriptprozess beenden, ohne den untergeordneten Prozess zu beenden?
1
Ich schreibe Shell-Skript, das PHP-Prozess ausführt. Aber es lief nicht im Hintergrund. Kann ich das Shell-Skript beenden, ohne den laufenden PHP-Prozess zu beenden?
Wenn Sie sich am selben Terminal wie der Prozess befinden, geben Sie ein ctrl-z, um das übergeordnete Element zu stoppen und ps -efdie PID des untergeordneten PHP-Elements zu ermitteln. Verwenden Sie die Kill-Linien oben, um das Kind effektiv vom Elternteil zu trennen. Kehren Sie fgdann in Ihr Shell-Skript zurück, und es sollte normal enden, oder Sie können kill -9das Shell-Skript direkt nach PID oder Name ausführen, während Sie dazu aufgefordert werden. Andernfalls wird durch das Töten des Elternteils (möglicherweise) das Kind getötet.
Antworten:
Ja, aber Sie müssen es zuerst trennen. Führen Sie Folgendes aus, um den untergeordneten vom übergeordneten Prozess zu trennen:
kill -20 PID
kill -18 PID
Siehe auch: https://stackoverflow.com/questions/625409/how-do-i-put-an-already-running-process-under-nohup
Wenn Sie sich am selben Terminal wie der Prozess befinden, geben Sie ein
ctrl-z
, um das übergeordnete Element zu stoppen undps -ef
die PID des untergeordneten PHP-Elements zu ermitteln. Verwenden Sie die Kill-Linien oben, um das Kind effektiv vom Elternteil zu trennen. Kehren Siefg
dann in Ihr Shell-Skript zurück, und es sollte normal enden, oder Sie könnenkill -9
das Shell-Skript direkt nach PID oder Name ausführen, während Sie dazu aufgefordert werden. Andernfalls wird durch das Töten des Elternteils (möglicherweise) das Kind getötet.quelle