web-dev-qa-db-fra.com

Comment tuer le processus en utilisant le nom du programme au lieu de PID?

J'ai commencé mon programme Python en arrière-plan en utilisant Nohup comme mentionné ci-dessous -

Nohup zook.py &

Maintenant, j'essaie de mettre fin à ce processus et j'ai donc exécuté la commande ps mentionnée ci-dessous.

root@phxdbx1145:/home/david/zook# ps ax | grep zook.py
16352 pts/6    S+     0:00 grep --color=auto zook.py

Mais de toute façon, chaque fois que son PID est modifié, je ne sais pas pourquoi. Chaque fois que je fais comme ça -

kill -9 16352

On dit toujours, No Such Process.

Et quand je répète la commande px, je constate que le PID a été modifié automatiquement.

Alors je ne suis pas sûr de savoir comment puis-je tuer ce processus?

Y a-t-il un moyen de tuer le processus avec le nom?

PDATE: -

C'est ce que je reçois. J'ai fait pkill -9 zook.py puis j'ai fait la commande ps comme mentionné ci-dessous et il est constamment en train de regarder zook.py?

root@dbx1145:/home/david/zook# pkill -9 zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23870 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23872 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23874 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23876 pts/6    S+     0:00 grep --color=auto zook.py
6
arsenal

Utilisez killall:

killall <the_process_name>
5
precise

Le pid dans votre exemple, celui qui ne cesse de changer, est l'ID de processus de votre grep essayant de trouver le PID. Cela signifie que vos ps et grep ne trouvent pas le processus que vous recherchez.

Essayez d’exécuter votre script sans le "et" suivant, pour voir ce qu’il fait. Les chances sont que cela échoue doucement sur vous et ne commence pas réellement du tout.

Vous pouvez également utiliser l'outil Moniteur système du tiret pour afficher la liste complète des processus avec les ID de processus.

3
ImaginaryRobots

vous pouvez utiliser pkill pour envoyer un signal de neutralisation identique au signal de neutralisation

Eg: pkill firefox 
pkill -9 firefox
2
Meow

Vous pouvez tuer avec xkill. Il suffit d’aller dans le dialogue "Exécuter" (Alt+F2), tapez xkill et le pointeur de votre souris se changera en "x". Pointez sur l'application que vous souhaitez tuer et cliquez dessus pour le tuer. Cela peut parfois être beaucoup plus rapide que de charger le Moniteur système.

2
kamil

Le problème de base est avec la commande 'ps ax | grep quelque chose '. Ceci répertorie toujours "grep ... quelque chose" dans le processus, qui est en fait le "grep" que vous avez commencé. utilisez 'pgrep' à la place pour obtenir le pid

voir: https://unix.stackexchange.com/questions/74185/how-can-i-prevent-grep-from-showing-up-in-ps-results

1
Vishu