web-dev-qa-db-fra.com

Comment rechercher un processus par son nom sans utiliser grep?

Afin de rechercher un processus, vous pouvez utiliser psavec grepname__.

Par exemple pour rechercher firefox

ps aux | grep firefox

Comment obtenir la même réponse sans utiliser grepname__?

58
Maythux

La commande pgrep et son frère pkill existent précisément pour cela:

  • pgrep firefox listera tous les processus dont les commandes correspondent à firefox
  • pgrep -f firefox listera tous les processus dont toutes les lignes de commande correspondent à firefox
  • pgrep -x firefox listera tous les processus dont les commandes correspondent exactement à firefox
  • ... etc.

Et naturellement, pgrep va s’exclure du match, donc aucun des rituels grep associés à ps | grep n’est nécessaire.


Les autres outils pour cela sont les commandes pidof et killall. Celles-ci ne sont pas aussi flexibles que pgrep et pkill.

  • pidof firefox listera les processus dont la commande est firefox
67
muru
ps -fC process-name

exemple:

ps -fC firefox

de man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.
23
Maythux

Un truc cool

$ps -ejH

Vous obtiendrez tous les processus avec des noms

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

Redirigez ou copiez la sortie dans un fichier, puis ouvrez nanoname__, appuyez sur Ctrl+W et vous pouvez rechercher le nom que vous voulez.

2
daniel

top vous permet de rechercher une chaîne lorsque vous frappez en majuscule L; le processus est mis en surbrillance et utilisez les touches fléchées haut et bas pour parcourir la liste des processus. De même, la commande htop permet de mettre en surbrillance un processus particulier lorsque vous appuyez sur /. Et \ va filtrer tous les processus avec une chaîne particulière dans le nom.

Pour ceux qui aiment awk, voici un exemple de awk: ps -eF | awk '/process-name/ {print $11}'. Avec ps -eF le nom du processus est toujours dans la 11ème colonne. Sinon, si vous faites ps -eF | awk '{print $11}' | sort, vous obtenez une liste triée des noms de processus, classés par ordre alphabétique. Introduisez-le dans la commande less pour visualiser plus facilement la longue liste de fichiers.

2

Vous pouvez également utiliser htop, puis appuyer sur F4 pour filtrer les résultats avec une chaîne correspondante définie par l'utilisateur. Vous avez également une fonctionnalité de recherche personnalisée disponible en appuyant sur F3.

1
JoErNanO

Si le problème est lié à deux processus, vous pouvez utiliser niquement grep:

grep firefox /proc/*/cmdline
1
user1497298

Je viens de lire cet alias ps sur le blog de Lennart Poettering. La sortie est conforme au système de contrôle parental du groupe de contrôle systemd:

alias psc='ps xawf -eo pid,user,cgroup,args'
0
DDPenga