Comment rechercher un processus par son nom sans utiliser grep?

62

Afin de rechercher un processus que vous pouvez utiliser psavec grep.

Par exemple pour rechercher firefox

ps aux | grep firefox

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

Maythux
la source
1
Je suis curieux de savoir pourquoi vous voudriez faire cela, étant donné que cette ps/grepsolution fonctionne si bien?
Neuronet
OP veut juste une commande plus courte, je suppose. S'il y avait une chose pareille, ps -n <process name>cela répondrait à son besoin. ps -n firefoxest un peu plus court que ps | grep firefox. pspeut déjà filtrer sur pidou les processus pour un ID utilisateur, il est donc raisonnable de filtrer sur le nom du processus.
Jochem Schulenklopper

Réponses:

71

La pgrepcommande et son frère pkillexistent 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, pgreps’excluera du match, donc aucun des greprituels associés ps | grepn’est nécessaire.


Les autres outils pour cela sont les commandes pidofet killall. Ce ne sont pas aussi flexibles que pgrepet pkill.

  • pidof firefox listera les processus dont la commande est firefox
muru
la source
24
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.
Maythux
la source
C'est la meilleure réponse, mais malheureusement, cela ne fonctionne pas sous OSX. Le ps -Cdrapeau BSD se comporte complètement différemment - "Modifie le calcul du pourcentage de la CPU"
mastaBlasta
2

topvous permet de rechercher une chaîne lorsque vous tapez 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 htopcommande permet de mettre en évidence un processus particulier lorsque vous appuyez sur /. Et \filtrera tous les processus avec une chaîne particulière dans le nom.

Pour ceux qui aiment awk, voici un oneliner awk: ps -eF | awk '/process-name/ {print $11}' . Avec le ps -eFnom du processus est toujours dans la 11ème colonne. Sinon, ps -eF | awk '{print $11}' | sortvous obtenez une liste triée des noms de processus, classés par ordre alphabétique. Pipe-le dans la lesscommande juste pour voir la longue liste de fichiers plus facilement.

Sergiy Kolodyazhnyy
la source
2

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

Rediriger ou copier le résultat dans un fichier, puis ouvrez-le nanoet appuyez sur Ctrl+ W pour rechercher le nom de votre choix.

Daniel
la source
1

Vous pouvez également utiliser htoppuis 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.

JoErNanO
la source
1

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

grep firefox /proc/*/cmdline
utilisateur1497298
la source
0

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'
DDPenga
la source