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

Hoe stop ik handmatig een Python script dat continu draait op linux

Ik heb een Python script dat loopt en continu fouten dumpt in een log bestand.

Ik wil het script bewerken en het opnieuw uitvoeren, maar ik weet niet hoe ik het script moet stoppen.

Ik ben momenteel ingelogd op Linux via PuTTy en doe al het coderen daar. Dus, is er een commando om het python script in linux te stoppen?

Antwoorden (6)

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

Je moet het proces id (pid) vinden. een commando om dit te doen zou zijn

$> ps -ef

om de resultaten te beperken tot python processen kun je het resultaat

$> ps -ef | grep python

grep wat resultaten zal geven als :

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

de tweede kolom is de pid. gebruik dan het kill commando als volgt :

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

Probeer deze eenvoudige regel, Het zal alle script.py beëindigen:

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

Zoek het proces id (PID) van het script en geef een kill -9 PID om het proces te doden, tenzij het draait als je voorgrond proces op de terminal, in welk geval je Contrl-C kunt gebruiken om het te doden.

Zoek de PID met dit commando:

ps -elf | grep python

Het geeft een lijst van alle python processen, kies de juiste en noteer zijn PID. Dan zal

kill -9 <whatever_the_PID_is>

het proces doden. Het kan zijn dat je in dit stadium een bericht krijgt dat je een proces hebt afgebroken.

Als alternatief kun je het top commando gebruiken om het python proces te vinden. Voer gewoon k (voor kill) in en het top programma zal je vragen om de PID van het te doden proces. Soms is het moeilijk om alle processen waarin je geïnteresseerd bent te zien met top omdat ze van het scherm kunnen rollen, ik denk dat de ps aanpak gemakkelijker/beter is.

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

Indien het programma het huidige proces is in uw commandoregel, zal het Python programma gestopt worden door Ctrl-C te typen.

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

In een perfecte wereld zou je de documentatie voor het script lezen en zien welk(e) signaal(en) gebruikt moet(en) worden om het te laten eindigen. In het echte leven wil je het waarschijnlijk eerst het TERM signaal sturen, misschien met een KILL signaal als het TERM negeert. Dus, wat je doet is het Proces ID vinden, met het ps commando (zoals iemand al beschreef). Daarna kun je kill -TERM <pid> uitvoeren. Sommige programma’s zullen dingen opruimen, zoals bestanden die ze misschien open hebben staan, als ze zo'n signaal krijgen, dus het is fijner om met zoiets te beginnen. Als dat niet lukt, dan blijft er niet veel anders over dan de grote hamer: kill -KILL <pid>. (je kunt de numerieke waarden gebruiken, b.v. -KILL = -9, en ze zullen waarschijnlijk nooit veranderen, maar in theoretische zin is het veiliger om de namen te gebruiken)

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

Als je de naam van het script weet, kun je al het werk terugbrengen tot een enkel commando:

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

Als je zeker wil weten dat het een python script is:

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

Als je alle python scripts wilde doden:

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

Ik neem aan dat je het idee snapt ;)

Herinnering: je moet “” aanhalen bij de script naam zoals in de voorbeelden.