Я пытаюсь убить процесс с помощью сценария оболочки. Похоже, что в этом процессе убивается сама оболочка. Также я вижу ненулевое возвращаемое значение скрипта в терминале.
Я запускаю его на Amazon Linux 2 с помощью sudo.
#!/bin/bash
kill -9 $(ps -ef | grep myapp | grep -v grep | awk '{print $2}')
Я выполняю как:
sudo ./myscript.sh
"Эхо $?" после выполнения возвращает 137 вместо нуля. Может кто-нибудь, пожалуйста, помогите понять, что происходит не так.
Еще одно наблюдение: если я напрямую запускаю команду kill в своем терминале, то есть ниже команды,
kill -9 $(ps -ef | grep myapp | grep -v grep | awk '{print $2}')
Я вижу эхо $? возвращает ноль.
Обновление: проблема решена. Имя процесса, который я пытаюсь убить, совпадает с именем моего скрипта. Следовательно, grep возвращает оба pid. Оба процесса убиваются. Также узнал, что лучший способ сделать это с помощью pkill или pidof() для получения pid.
kill
действительно убивает здесь, выполнивset -x
перед запуском команды и проверив ее вывод. - person user1934428   schedule 22.10.2019pkill
и действительно хотите избежать-9
- person tripleee   schedule 22.10.2019