GNU/Linux >> Tutoriels Linux >  >> Linux

Comment grep ps sortie avec des en-têtes

Solution 1 :

ps -ef | egrep "GMC|PID"

Remplacez le "GMC" et ps commutateurs selon les besoins.

Exemple de sortie :

[email protected]:~$ ps -ef | egrep "disk|PID"

UID        PID  PPID  C STIME TTY          TIME CMD
paremh1  12501 12466  0 18:31 pts/1    00:00:00 egrep disk|PID
root     14936     1  0 Apr26 ?        00:02:11 /usr/lib/udisks/udisks-daemon
root     14937 14936  0 Apr26 ?        00:00:03 udisks-daemon: not polling any devices

Solution 2 :

Grâce à geekosaur, j'aimerais utiliser cette commande pour vos demandes, plutôt qu'une commande séparée :

ps -ef | head -1; ps -ef | grep "your-pattern-goes-here"

Le plus délicat est d'utiliser le ";" pris en charge par le shell pour enchaîner la commande.

Solution 3 :

La deuxième colonne est l'identifiant du processus ; 4ème est le moment où le processus a été créé (c'est généralement l'heure à laquelle votre programme a démarré, mais pas toujours ; considérez execve() et amis); 6ème est la quantité de temps CPU consommée. Il a donc fonctionné pendant 8 jours et utilisé près de 7 jours de temps CPU, ce que je considérerais comme inquiétant.

Obtenir l'en-tête dans la même invocation est au mieux délicat; Je ferais juste un ps | head -1 séparé . Vous pourriez envisager d'utiliser ps les propres méthodes de sélection de ou quelque chose comme pgrep au lieu de grep , qui n'est pas vraiment conçu pour transmettre les en-têtes.

Solution 4 :

La solution egrep est simple et utile, mais bien sûr, vous dépendez de l'en-tête contenant toujours 'PID' (une hypothèse plus que raisonnable, cependant) et de la même chaîne qui ne se produit pas ailleurs. Je suppose que c'est suffisant pour vos besoins, mais au cas où quelqu'un voudrait une alternative, il y a sed.

Sed vous permet simplement de dire "imprimer la première ligne, puis toute ligne contenant le motif". Par exemple :

ps auxwww | sed -n '1p; /PROCESS_NAME_TO_SEARCH/p;'

Ajouter /sed -n/d; pour se filtrer :

ps auxwww | sed -n '1p; /sed -n/d; /PROCESS_NAME_TO_SEARCH/p;'

Solution 5 :

alternative plus simple :ps -ef | { head -1; grep GMC; }

remplacez le nombre par le nombre de lignes sur lesquelles votre en-tête est affiché.


Linux
  1. Comment trier la sortie par taille ?

  2. Comment démarrer Grep multi-thread dans le terminal ?

  3. Comment puis-je grep récursivement?

  4. Comment concaténer plusieurs lignes de sortie sur une seule ligne ?

  5. Comment puis-je boucler sur la sortie d'une commande shell ?

Comment exclure dans Grep

Comment capturer la sortie d'une commande top dans un fichier sous Linux ?

Comment grep \n dans le fichier

Comment diriger la sortie de grep vers cp?

Comment passer la sortie de la commande sous forme d'arguments multiples à une autre commande

iftop - comment générer un fichier texte avec sa sortie ?