
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 :)