2012-07-09 13:15:55 +0000 2012-07-09 13:15:55 +0000
19
19

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

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

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

В настоящее время я вхожу в Linux через PuTTy и выполняю там все кодирование. Итак, есть ли команда остановить питоновый скрипт в linux?

Ответы (6)

35
35
35
2012-07-09 13:19:39 +0000

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

$> ps -ef

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

$> ps -ef | grep python

, который будет давать результаты как :

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

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

$> kill -9 2430 (i.e. the pid returned)
7
7
7
2016-05-25 10:23:16 +0000

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

pkill -9 -f script.py
7
7
7
2012-07-09 13:17:43 +0000

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

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

ps -elf | grep python

Она перечисляет все питоновые процессы, выбирает нужный и отмечает его PID. Затем

kill -9 <whatever_the_PID_is>

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

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

4
4
4
2012-07-09 13:17:29 +0000

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

1
1
1
2014-07-15 17:16:12 +0000

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

0
0
0
2015-03-25 11:03:19 +0000

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

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

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

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

Если вы хотите убить все питоновые сценарии:

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

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

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

Похожие вопросы

6
10
5
37
6