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

Comment arrêter manuellement un script Python qui tourne en continu sur linux

J'ai un script Python qui fonctionne et qui déverse continuellement les erreurs dans un fichier journal.

Je veux modifier le script et le relancer, mais je ne sais pas comment l'arrêter.

Je suis actuellement connecté à Linux via PuTTy et j'y fais tout le codage. Alors, y a-t-il une commande pour arrêter le script python dans linux ?

Réponses (6)

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

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 greffer le résultat

$> ps -ef | grep python

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. utilisez ensuite la commande kill comme telle :

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

Essayez cette simple ligne, elle mettra fin à tous les script.py :

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

Trouvez l'identifiant du processus (PID) du script et émettez un kill -9 PID pour tuer le processus, sauf s'il s'exécute en tant que processus de base sur le terminal, auquel cas vous pouvez utiliser Contrl-C pour le tuer.

Trouvez le PID avec cette commande :

ps -elf | grep python

Il liste tous les processus python, choisissez le bon et notez son PID. Ensuite,

kill -9 <whatever_the_PID_is>

tuera le processus. Vous pouvez recevoir un message indiquant qu'un processus est terminé à ce stade.

Alternativement, vous pouvez utiliser la commande top pour trouver le processus python. Saisissez simplement k (pour tuer) et le programme top vous demandera le PID du processus à tuer. Il est parfois difficile de voir tous les processus qui vous intéressent avec top car ils peuvent défiler hors de l'écran, je pense que l'approche ps est plus facile/meilleure.

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

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

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

Dans un monde parfait, vous liriez la documentation du scénario et verriez quel(s) signal(s) utiliser pour lui dire de se terminer. Dans la vie réelle, vous voulez 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 du 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 vont nettoyer des choses, comme les fichiers qu'ils ont pu ouvrir, quand ils reçoivent un signal comme ça, donc c'est plus agréable de commencer avec quelque chose comme ça. Si cela échoue, alors il ne reste plus 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 d'un point de vue théorique, il serait plus sûr d'utiliser les noms)

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

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 être sûr qu'il s'agit d'un script python :

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

Si vous voulez tuer tous les scripts python :

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

Je suppose que vous avez compris ;)

Rappel : vous devez citer “” le nom du script tel qu'il figure dans les exemples.