Я запустил свою программу Python в фоновом режиме, используя nohup
, как указано ниже -
nohup zook.py &
Теперь я пытаюсь убить этот процесс, поэтому я выполнил команду ps
, как указано ниже
root@phxdbx1145:/home/david/zook# ps ax | grep zook.py
16352 pts/6 S+ 0:00 grep --color=auto zook.py
Но почему-то, каждый раз, когда менялся его PID, я не знаю почему. Всякий раз, когда я так делаю -
kill -9 16352
Всегда говорят, No Such Process
.
И когда я снова выполняю команду px, я вижу, что PID изменился автоматически ..
Так что я не уверен, как мне убить этот процесс?
Есть ли способ как-нибудь убить процесс с именем?
ОБНОВЛЕНИЕ: -
Это то, что я получаю. Я сделал pkill -9 zook.py
, а затем я сделал команду ps, как упомянуто ниже, и она постоянно показывает zook.py?
root@dbx1145:/home/david/zook# pkill -9 zook.py
root@dbx1145:/home/david/zook# ps ax | grep zook.py
23870 pts/6 S+ 0:00 grep --color=auto zook.py
root@dbx1145:/home/david/zook# ps ax | grep zook.py
23872 pts/6 S+ 0:00 grep --color=auto zook.py
root@dbx1145:/home/david/zook# ps ax | grep zook.py
23874 pts/6 S+ 0:00 grep --color=auto zook.py
root@dbx1145:/home/david/zook# ps ax | grep zook.py
23876 pts/6 S+ 0:00 grep --color=auto zook.py
Используйте killall
:
killall <the_process_name>
Pid в вашем примере, который постоянно меняется, - это идентификатор процесса вашего grep, пытающегося найти PID. Это означает, что ваши ps и grep не находят тот процесс, который вы ищете.
Попробуйте запустить свой сценарий без завершающего «& amp;», чтобы увидеть, что он делает. Скорее всего, он тихо рушится и совсем не начинается.
Вы также можете использовать инструмент System Monitor из тире, чтобы увидеть полный список процессов с идентификаторами процессов.
Вы можете использовать pkill для отправки сигнала уничтожения, аналогичного сигналу уничтожения
Eg: pkill firefox
pkill -9 firefox
Вы можете убить с xkill
. Просто перейдите в диалоговое окно «Выполнить» ( Alt kbd> + F2 kbd>), введите xkill
, и указатель мыши изменится на «x». Укажите приложение, которое вы хотите убить, и нажмите, и оно будет убито. Иногда это может быть намного быстрее, чем загрузка системного монитора.
Основная проблема с командой 'ps ax | grep что-то ». Это всегда перечисляет «grep ... что-то» как один из процессов, который фактически является «grep», запущенным вами. вместо этого используйте pgrep, чтобы получить pid
Лучший ответ здесь, https://askubuntu.com/a/760514/877732
Если myName не является именем процесса или, например, является аргументом для другая (длинная) команда pkill (или pgrep) может работать не так, как ожидалось. Поэтому вам нужно использовать опцию -f.