12

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

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

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

6 ответов6

31

Вам нужно будет найти идентификатор процесса (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)
7

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

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

ps -elf | grep python

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

kill -9 <whatever_the_PID_is>

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

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

3

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

pkill -9 -f script.py
3

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

1

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

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

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

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

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