kill -9 funktioniert nicht über ein Bash-Skript, aber über die Konsole

kill -9 funktioniert nicht über ein Bash-Skript, aber über die Konsole

Ich habe zwei Skripte, eines startet Appium und lässt es im Hintergrund laufen, das andere beendet es (oder das sollte es zumindest tun).

start_appium.sh:

nohup node $APPIUM --nodeconfig $CONFIG_PATH -a $IP_ADDRESS --port $APPIUM_PORT --chromedriver-port $CHROME_DRIVER_PORT --log $LOG_FILE > /dev/null 2>&1 &

kill_all_appiums.sh:

kill -9 $(ps aux | grep 'appium' | awk '{print $2}')

Das Kill-Skript funktioniert jedoch nicht, wenn es ausgeführt wird. Wenn ich denselben Kill-Befehl kopiere und ihn direkt im Terminal ausführe, funktioniert es. Warum ist das so und wie kann ich das Problem beheben?

PS: Ich verwende einen Mac und weiß nicht, wie relevant das ist.

Antwort1

TL;DR: Mein Skript beendet sich selbst, bevor es den Appium-Prozess beendet.

Das Problem lag im Namen meines Skripts, das „Appium“ im Namen enthielt. Der Code $(ps aux | grep 'appium' | awk '{print $2}')ruft die PID von /bin/bash ab, das das Skript /path/to/kill_appiums.sh ausführt. Und dann scheint es, als würde es das Skript beenden, das den Appium-Prozess beenden sollte. Dann gibt es niemanden, der den Appium-Prozess beenden könnte, und er bleibt aktiv :)

verwandte Informationen