
У меня есть два скрипта: один запускает 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, и он остается активным :)