Quelle est la commande du terminal pour trouver l'ID d'un processus


12

Je souhaite quitter un processus à l'aide de la ligne de commande, mais je ne me souviens pas de la commande pour rechercher l'ID du processus. Quelqu'un le sait-il?

Réponses:


13

La commande pour trouver l'id d'un processus (compte tenu de son nom) est pidof. Cependant, puisque votre intention est de tuer le processus, il existe des moyens meilleurs / plus simples que d'utiliser pidofpour trouver son pid en premier:

En supposant que le processus que vous souhaitez tuer est identifié de manière unique par son nom (ou que vous souhaitez tuer tous les processus portant ce nom), vous n'avez pas besoin de connaître son pid. Vous pouvez simplement le faire killall processname.

S'il y a plusieurs processus avec le même nom, mais que vous voulez seulement en tuer un, l'utilisation pidofne vous aidera pas beaucoup, car cela vous donnera les pids, mais cela ne vous donnera aucune information pour déterminer lequel des pids appartient au processus que vous voulez réellement tuer.

Dans ce cas, vous pouvez faire ps aux | grep processnamequi affichera tous les processus avec le nom donné ainsi que la console sur laquelle ils s'exécutent (le cas échéant) et les arguments avec lesquels ils ont été invoqués, ce qui, nous l'espérons, vous permet d'identifier le processus que vous recherchez .

Si le processus a ouvert des fenêtres X, vous pouvez également utiliser xkillpour tuer (invoquer xkillpuis cliquer sur la fenêtre).


7

Vous devriez jeter un œil à pgrepet pkill, deux utilitaires très pratiques et puissants que l'on trouve sur la plupart des systèmes Linux et UNIX.

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes

5

Vous pouvez exécuter ps -Adans le terminal pour afficher tous les processus (avec leur ID de processus) en cours d'exécution.


Pipe pour greprechercher le nom d'un processus spécifique:ps -A | grep 'my name'
Gabriel Staples

2

J'ai également eu un problème similaire. J'ai utilisé pstree -p; cela m'a montré les processus en cours d'exécution, y compris les ID de processus.


commande intéressante
jumpnett


1

Mon préféré est pstree -p | grep $(program_name). En fait, cela greps le processus, le met en surbrillance et montre le pid entre parenthèses.

Mon prochain favori (en particulier lorsque vous programmez et avez besoin de tous les pids du processus) est pgrep -law "". Cela vous donne littéralement chaque pid en cours d'exécution suivi de l'application (avec chemin absolu).

Cela peut être réduit à pgrep -lw ""pour pid suivi du nom du programme ou même juste pgrep -lpour tous les pids

Bien sûr, vous pouvez rechercher le nom d'un programme particulier (ou d'une partie du programme). (ie pgrep -lw firefaffichera probablement quelque chose comme "4567 firefox").


Ce ne serait pas pstree -psH $(pgrep prgram_name)mieux pour le premier cas?
muru

Ouais ça marche aussi. Vous pouvez créer un alias pour cela. J'utilisais juste le $ () pour représenter le nom d'un programme; Je pense que taper $ (nom pgrep) est un peu ennuyeux à cause du signe dollar, mais je pense qu'un pseudonyme pourrait être utile.
dylnmc

0

Cette réponse, de @Ben sur une question en double , a résolu mon problème:

Pensez à utiliser la topcommande dans le terminal.

   The  top  program  provides  a dynamic real-time view of a running
   system.  It can display system summary information as  well  as  a
   list  of processes or threads currently being managed by the Linux
   kernel.  The types of system summary  information  shown  and  the
   types,  order  and size of information displayed for processes are
   all user configurable and that configuration can be  made  persis‐
   tent across restarts.

via l' homme haut

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.