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 -9 $(ps aux | grep 'appium' | awk '{print $2}')

ただし、kill スクリプトは実行時に機能しません。同じ kill コマンドをコピーしてターミナルで直接実行すると、機能します。これはなぜですか。また、どうすれば修正できますか。

追記: 私は Mac を使用しているので、それがどの程度関連しているかはわかりません。

答え1

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

問題は、スクリプト名に appium が含まれていることにありました。コードは、$(ps aux | grep 'appium' | awk '{print $2}')/path/to/kill_appiums.sh スクリプトを実行している /bin/bash の pid を取得します。そして、appium プロセスを強制終了するはずのスクリプトを強制終了しているようです。すると、appium プロセスを強制終了する人がいなくなり、プロセスはアクティブなままになります :)

関連情報