kill -9 не работает из скрипта bash, но работает в консоли

kill -9 не работает из скрипта bash, но работает в консоли

У меня есть два скрипта: один запускает appium и заставляет его работать в фоновом режиме, другой убивает его (или это то, что он должен делать).

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}')получает pid /bin/bash, который запускает скрипт /path/to/kill_appiums.sh. И затем, похоже, он убивает скрипт, который должен убивать процесс appium. Тогда некому убивать процесс appium, и он остается активным :)

Связанный контент