Как вручную остановить скрипт Python, который постоянно работает на Linux

19

У меня есть скрипт Python, который работает и постоянно сбрасывает ошибки в файл журнала.

Я хочу отредактировать скрипт и запустить его снова, но не знаю, как остановить скрипт.

В настоящее время я вошел в Linux через PuTTy и делаю там все кодирование. Итак, есть ли команда для остановки скрипта Python в Linux?

Гуннар
источник

Ответы:

35

Вам нужно будет найти идентификатор процесса (pid). одна команда сделать это будет

$> ps -ef

чтобы ограничить результаты процессами Python, вы можете получить результат grep

$> ps -ef | grep python

который даст результаты как:

user      2430     1  0 Jul03 ?        00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd

второй столбец - это пид. затем используйте команду kill как таковую:

$> kill -9 2430 (i.e. the pid returned)
olly_uk
источник
Это именно то, что я искал. Спасибо
7

Найдите идентификатор процесса (PID) сценария и kill -9 PIDвведите команду «kill», чтобы завершить процесс, если он не запущен как ваш процесс forground на терминале, и в этом случае вы можете использовать Contrl-C для его уничтожения.

Найдите PID с помощью этой команды:

ps -elf | grep python

В нем перечислены все процессы Python, выберите правильный и запишите его PID. потом

kill -9 <whatever_the_PID_is>

убьет процесс. Вы можете получить сообщение о завершении процесса на этом этапе.

Кроме того, вы можете использовать topкоманду, чтобы найти процесс Python. Просто введите k(для уничтожения), и topпрограмма предложит вам PID процесса для уничтожения. Иногда трудно увидеть все процессы, которые вас интересуют, topпоскольку они могут прокручиваться за пределы экрана, я думаю, что psподход проще / лучше.

Левон
источник
4
Ну, прежде чем использовать -9, я бы убил его "мягко" в первую очередь. Только если он не отреагирует, я бы использовал -9.
glglgl
Не знаком с термином "мягкое убийство" ..
Левон
7

Попробуйте эту простую строку, она прекратит все script.py:

pkill -9 -f script.py
Trex
источник
1
Это намного лучше, чем поиск PID вручную, если имя скрипта уникально.
FlippingBinary
4

Если программа является текущим процессом в вашей оболочке, нажатие Ctrl-C остановит программу Python.

Нед Бэтчелдер
источник
Отличное решение, нужно это для тестирования.
Кузон
1

В идеальном мире вы прочитали бы документацию к сценарию и увидели, какой сигнал (ы) должен использоваться для того, чтобы он закончился. В реальной жизни вы, вероятно, хотите сначала отправить ему сигнал TERM, возможно, используя сигнал KILL, если он игнорирует TERM. Итак, что вы делаете, это находите идентификатор процесса, используя команду ps (как кто-то уже описал). Затем вы можете бежать kill -TERM <pid>. Некоторые программы убирают такие вещи, как файлы, которые они могут открывать, когда получают такой сигнал, поэтому лучше начать с чего-то подобного. Если это не удастся, то ничего не остается, кроме большого молотка kill -KILL <pid>. (вы можете использовать числовые значения, например -KILL = -9, и они, вероятно, никогда не изменятся, но в теоретическом смысле было бы безопаснее использовать имена)

JrL
источник
0

Если вы знаете имя скрипта, вы можете свести всю работу к одной команде:

ps -ef | grep "script_name" | awk '{print $2}' | xargs sudo kill

Если вы хотите убедиться, что это скрипт Python:

ps -ef | grep "python script_name" | awk '{print $2}' | xargs sudo kill

Если вы хотите убить все скрипты Python:

ps -ef | grep "python" | awk '{print $2}' | xargs sudo kill

Я полагаю, вы поняли идею;)

Напоминание: вам нужно указать "" имя скрипта, как в примерах.

Иисус
источник