Comment arrêter manuellement un script Python qui s'exécute en continu sur Linux


19

J'ai un script Python qui s'exécute et qui vide continuellement les erreurs dans un fichier journal.

Je souhaite modifier le script et l'exécuter à nouveau, mais je ne sais pas comment arrêter le script.

Je suis actuellement connecté à Linux via PuTTy et je fais tout le codage là-bas. Alors, existe-t-il une commande pour arrêter le script python sous linux?

Réponses:


35

Vous devrez trouver l'identifiant du processus (pid). une commande pour ce faire serait

$> ps -ef

pour limiter les résultats aux processus python, vous pouvez saluer le résultat

$> ps -ef | grep python

ce qui donnera des résultats comme:

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

la deuxième colonne est le pid. puis utilisez la commande kill en tant que telle:

$> kill -9 2430 (i.e. the pid returned)

C'est exactement ce que je cherchais. Merci

7

Recherchez l'ID de processus (PID) du script et émettez un kill -9 PIDpour tuer le processus à moins qu'il ne s'exécute en tant que processus de base sur le terminal, auquel cas vous pouvez Contrl-C pour le tuer.

Trouvez le PID avec cette commande:

ps -elf | grep python

Il répertorie tous les processus python, choisissez celui de droite et notez son PID. alors

kill -9 <whatever_the_PID_is>

va tuer le processus. Vous pouvez recevoir un message indiquant la fin d'un processus à ce stade.

Alternativement, vous pouvez utiliser la topcommande pour trouver le processus python. Entrez simplement k(pour kill) et le topprogramme vous demandera le PID du processus à tuer. Parfois, il est difficile de voir tous les processus qui vous intéressent topcar ils peuvent défiler hors de l'écran, je pense que l' psapproche est plus facile / meilleure.


4
Eh bien, avant de l'utiliser -9, je le tuerais d'abord "doucement". Seulement si ça ne réagit pas, j'utiliserais -9.
glglgl

Pas familier avec le terme "tuer doucement".
Levon

7

Essayez cette ligne simple, elle terminera tout script.py:

pkill -9 -f script.py

1
C'est bien mieux que de rechercher manuellement le PID si le nom du script est unique.
FlippingBinary

4

Si le programme est le processus en cours dans votre shell, taper Ctrl-C arrêtera le programme Python.


Excellente solution, nécessaire pour les tests.
Kuzon

1

Dans un monde parfait, vous liriez la documentation du script et verriez quel (s) signal (s) utiliser pour lui dire de se terminer. Dans la vraie vie, vous voudrez probablement lui envoyer le signal TERM, d'abord, peut-être en utilisant un signal KILL s'il ignore le TERM. Donc, ce que vous faites est de trouver l'ID de processus, en utilisant la commande ps (comme quelqu'un l'a déjà décrit). Ensuite, vous pouvez exécuter kill -TERM <pid>. Certains programmes nettoieront les choses, comme les fichiers qu'ils pourraient avoir ouverts, quand ils recevront un signal comme ça, donc c'est plus agréable de commencer avec quelque chose comme ça. Si cela échoue, alors il n'y a pas grand - chose à faire à part le gros marteau: kill -KILL <pid>. (vous pouvez utiliser les valeurs numériques, par exemple -KILL = -9, et elles ne changeront probablement jamais, mais dans un sens théorique, il pourrait être plus sûr d'utiliser les noms)


0

Si vous connaissez le nom du script, vous pouvez réduire tout le travail à une seule commande:

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

Si vous voulez vous assurer qu'il s'agit bien d'un script python:

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

Si vous vouliez tuer tous les scripts python:

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

Je suppose que vous avez l'idée;)

Rappel: vous devez "" citer le nom du script tel qu'il est dans les exemples.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.