Kill -9はbashスクリプトでは機能しませんが、コンソールでは機能します。

Kill -9はbashスクリプトでは機能しませんが、コンソールでは機能します。

私は2つのスクリプトを持っています。 1つはappiumを起動し、バックグラウンドで実行するようにし、もう1つはそれを終了します(またはそれがすべきことです)。

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}')

しかし、killスクリプトを実行しても機能しません。同じkillコマンドをコピーして端末から直接実行すると機能します。なぜそんなことですか?どうすれば解決できますか?

PS:私はMacを使っていますが、これがどれほど関連性があるのか​​わかりません。

答え1

TL; DR私のスクリプトは、Appiumプロセスを終了する前に自動的に終了します。

問題は、私のスクリプト名にappiumがあることです。このコードは、$(ps aux | grep 'appium' | awk '{print $2}')/path/to/kill_appiums.shスクリプトが実行されている/bin/bashのpidを取得します。その後、appiumプロセスを終了する必要があるスクリプトを終了するようです。これにより、誰もappiumプロセスを殺さずに生きることができます:)

関連情報