GNU/Linux >> Tutoriels Linux >  >> Linux

Comment faire en sorte que pgrep affiche les informations complètes sur le processus

Solution 1 :

pgrep Les options de sortie sont assez limitées. Vous devrez presque certainement le renvoyer via ps pour faire sortir les informations importantes. Vous pouvez automatiser cela en utilisant une fonction bash dans votre ~/.bashrc .

function ppgrep() { pgrep "[email protected]" | xargs --no-run-if-empty ps fp; }

Appelez ensuite la commande avec.

ppgrep <pattern>

Solution 2 :

Combinez pgrep avec ps en utilisant xargs !

pgrep <your pgrep-criteria> | xargs ps <your ps options> -p

Par exemple, essayez

pgrep -u user | xargs ps -f -p

pour obtenir une liste complète des processus de user . Choix -u user limites pgrep à l'utilisateur donné (sous forme de numéro ou de nom) tandis que le ps choix -f -p demander une liste au format complet pour le PID sélectionné.

C'est bien que vous gardiez la première ligne avec les noms de colonnes. grep supprime toujours les noms de colonne.

Solution 3 :

Ce qui suit ne vous donne que le PID + la ligne de commande complète. Pour "toutes les infos ps fait", voir les autres réponses...

La plupart des Linux utilisent procps-ng. Depuis la version 3.3.4 (publiée en 2012), pgrep -a (--list-full ) affiche la ligne de commande complète.
Remarque :Par défaut, pgrep ne correspond qu'au modèle que vous donnez avec le nom de l'exécutable. Si vous voulez faire correspondre la ligne de commande complète (comme le fait grep ps), ajoutez le -f (--full ).

Dans les anciennes versions (y compris le projet original procps), -l l'option affichait des informations mais son comportement variait :

  • pgrep -fl correspondait au modèle par rapport à la ligne de commande complète et affichait la ligne de commande complète.
  • pgrep -l seul ne correspondait qu'au nom de l'exécutable et n'affichait que le nom de l'exécutable.
    Si vous ne voulez pas de correspondance complète, vous ne pouvez pas voir la ligne de commande complète :-([https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15]

Je ne sais pas quel code *BSD utilise mais leur page de manuel documente l'ancien -fl comportement.

Malheureusement, vous ne pouvez même pas utiliser -fl portable - dans le récent procps-ng, -f (--list-name ) imprime toujours uniquement le nom de l'exécutable.

Solution 4 :

Linux

Pour la version GNU de pgrep la sortie longue + floue est obtenue avec -af et la chaîne doit être sensible à la casse (c'est-à-dire il n'y a pas d'option pour l'insensibilité à la casse ).

$ pgrep -af apache

OUTPUT:
    1748 /usr/sbin/apache2 -k start

Page de manuel :

   -a, --list-full
       List  the  full  command line as well as the process ID.  (pgrep only.)

   -f, --full
       The pattern is normally only matched against the process name.  
       When -f is set, the full command  line is used.

MacOS

Sur OSX (et par inférence, sur BSD) -l (sortie longue ) en combinaison avec -f (correspond à des listes complètes d'arguments ) affichera la commande complète (-i ajoute une insensibilité à la casse) :

$ pgrep -fil ssh

OUTPUT:
    33770 ssh: [email protected] [mux] t

La page de manuel :

 -l          Long output.  For pgrep, print the
             process name in addition to the
             process ID for each matching
             process.  If used in conjunction
             with -f, print the process ID and
             the full argument list for each
             matching process.  For pkill, dis-
             play the kill command used for
             each process killed.

Solution 5 :

Utilisez l'option -v pour grep - il renvoie tout SAUF le modèle demandé.

ps -ef | grep <process> | grep -v grep

Linux
  1. Comment obtenir l'ID de processus du processus d'arrière-plan ?

  2. Comment obtenir l'ID de processus pour tuer un processus nohup ?

  3. Comment obtenir le PID d'un processus enfant forké dans un script shell

  4. Comment obtenir un processus enfant à partir d'un processus parent

  5. Comment obtenir uniquement l'ID de processus en spécifiant le nom du processus sous Linux?

Comment afficher les informations de processus à l'aide de Procs sous Linux

Comment afficher les PPID sous Linux

Comment obtenir le nom de fichier à partir du chemin complet sous Linux

Comment afficher les informations sur le processeur Linux à l'aide de CPUFetch

Comment obtenir l'utilisation du processeur d'un seul processus sous Linux

Comment obtenir le pid du processus qui vient de démarrer