Linux에서 지속적으로 실행되는 Python 스크립트를 수동으로 중지하는 방법


19

파이썬 스크립트가 실행 중이며 지속적으로 오류를 로그 파일에 덤프합니다.

스크립트를 편집하고 다시 실행하고 싶지만 스크립트를 중지하는 방법을 모르겠습니다.

저는 현재 PuTTy를 통해 Linux에 로그인했으며 모든 코딩을 수행하고 있습니다. 그렇다면 리눅스에서 파이썬 스크립트를 중지시키는 명령이 있습니까?

답변:


35

프로세스 ID (pid)를 찾아야합니다. 이 작업을 수행하는 하나의 명령은

$> ps -ef

파이썬 프로세스로 결과를 제한하기 위해 결과를 grep 할 수 있습니다

$> 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)

바로 내가 찾던 것입니다. 감사합니다

8

이 간단한 라인을 사용해보십시오 script.py. 모두 종료됩니다 .

pkill -9 -f script.py

1
스크립트 이름이 고유 한 경우 PID를 수동으로 검색하는 것보다 훨씬 좋습니다.
FlippingBinary

7

kill -9 PID터미널에서 forground 프로세스로 실행되고 있지 않은 경우 스크립트의 프로세스 ID (PID)를 찾아 a 를 발행하여 프로세스를 종료하십시오.이 경우 Contrl-C를 사용하여 프로세스를 종료 할 수 있습니다.

이 명령으로 PID를 찾으십시오.

ps -elf | grep python

모든 파이썬 프로세스를 나열하고 올바른 프로세스를 골라 PID를 기록하십시오. 그때

kill -9 <whatever_the_PID_is>

프로세스를 종료합니다. 이 단계에서 프로세스를 종료했다는 메시지가 표시 될 수 있습니다.

또는 top명령을 사용 하여 파이썬 프로세스를 찾을 수 있습니다 . 간단히 k(죽이기 위해) 입력 하면 top프로그램이 죽일 프로세스의 PID를 묻습니다. 때로는 top화면에서 스크롤 될 수 있기 때문에 관심있는 모든 프로세스를보기가 어렵습니다 . ps접근법이 더 쉽고 더 좋습니다.


4
글쎄, 사용하기 전에 먼저 -9"부드럽게"죽일 것입니다. 반응하지 않는 경우에만을 사용 -9합니다.
glglgl

"소프트 킬링"용어에 익숙하지 않음 ..
Levon

4

프로그램이 쉘에서 현재 프로세스 인 경우 Ctrl-C를 입력하면 Python 프로그램이 중지됩니다.


훌륭한 솔루션, 테스트에 필요했습니다.
Kuzon

1

완벽한 세상에서, 당신은 스크립트에 대한 문서를 읽고 그것을 끝내기 위해 어떤 신호를 사용해야하는지 볼 것입니다. 실제로는 TERM 신호를 먼저 보내고, TERM을 무시하면 KILL 신호를 사용하는 것이 좋습니다. 따라서 ps 명령을 사용하여 프로세스 ID를 찾으십시오 (이미 설명 된대로). 그런 다음을 실행할 수 있습니다 kill -TERM <pid>. 일부 프로그램은 열려있을 수있는 파일과 같은 신호를받을 때이를 정리하므로 그런 것부터 시작하는 것이 좋습니다. 이것이 실패하면 큰 망치를 제외하고 할 일이별로 남아 있지 않습니다 kill -KILL <pid>. (숫자 값 (예 : -KILL = -9)을 사용할 수 있으며이 값은 변경되지 않지만 이론적으로는 이름을 사용하는 것이 더 안전 할 수 있습니다)


0

스크립트 이름을 알고 있으면 모든 작업을 단일 명령으로 줄일 수 있습니다.

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

나는 당신이 아이디어를 얻는다고 생각합니다.)

알림 : 예에서와 같이 스크립트 이름을 ""로 인용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.