3

Я пытаюсь убить процессы ниже:

pi@raspberrypi ~ $ ps aux | grep raspi
pi        4647  0.0  0.5   3520  1392 pts/2    S+   12:05   0:00 grep --color=auto raspi
root      8148  0.0  0.5  10744  1372 ?        Sl   06:25   0:00 raspivid -w 800 -h 600 -t 15000 -o /home/pi/media/2015-02-01-06-25-03.177474.h264 -n -rot 270
pi       30099  0.0  0.6  11400  1748 pts/1    Sl+  11:57   0:00 raspistill -o test.jpg

Я попробовал некоторые команды, как показано ниже, но безуспешно:

pi@raspberrypi ~ $ sudo pkill -f raspivid
pi@raspberrypi ~ $ sudo pkill -f raspistill
pi@raspberrypi ~ $ sudo kill 8148
pi@raspberrypi ~ $ sudo kill 30099

Я вошел через SSH как пользователь "pi", это источник проблемы? Если да, то почему я не могу убить свой собственный процесс (30099)?

Я что-то здесь упускаю?

2 ответа2

5

Название семейства команд kill вводит в заблуждение - они на самом деле ничего не убивают, просто посылают сигналы процессам. По умолчанию отправляется сигнал SIGTERM , который лишь мягко просит процесс выйти, но процесс может выбрать его игнорирование или обработку по-другому. (см. справочную страницу для kill).

Чтобы принудительно выйти из процесса, вы должны отправить ему сигнал SIGKILL . SIGKILL не может быть проигнорирован процессом и в большинстве случаев приводит к его немедленному завершению, без завершения незавершенных задач и т.д.

Существует несколько возможных синтаксисов для отправки SIGKILL , все они полностью эквивалентны:

kill -9 <pid>
kill -kill <pid>
kill -s SIGKILL <pid>

Вполне возможно, что процесс будет невозможен даже с SIGKILL и потребуется перезагрузка.

0

Я убил скрипт python3, который был запущен через rc.local командой:

sudo killall python3

Сначала я перечислил все запущенные процессы с помощью команды: ps -ef

Надеюсь это поможет,

Билл

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .