Désactiver les noms de colonne dans la sortie ps

23

Comment formater la sortie de la ps -pcommande?

Pour ne pas me montrer quelque chose comme ça:

PID TTY                TIME CMD

mais juste des PID.

J'utilise Linux.

TicTacToe
la source

Réponses:

36

Utilisez l' -ooption pour sélectionner les colonnes à afficher. Si vous mettez =après le nom de la colonne, la ligne d'en-tête est supprimée.

ps -o pid= -p 1 23 456
ps -o pid= -o ppid= -o pgid= -o sid= -p 1 23 456
Gilles 'SO- arrête d'être méchant'
la source
Cette réponse a l'avantage d'être portable (prise en charge par les BSD et spécifiée par POSIX .
Anthony G - justice pour Monica
21

Utilisez le --no-headerspour supprimer la ligne d'en-tête.

Sortie d'origine:

ps
  PID TTY          TIME CMD
27027 pts/0    00:00:00 bash
27071 pts/0    00:00:00 ps

Avec --no-headers:

ps --no-headers
27027 pts/0    00:00:00 bash
27072 pts/0    00:00:00 ps

Combiner avec -p:

ps -p 1 --no-headers
    1 ?        00:00:33 systemd

La manpage de psdocumente clairement ceci:

man ps

[snip]

 --no-headers
          Print no header line at all.  --no-heading is an alias for this option.
Steve
la source
2
Ne fonctionne pas sur macos. Naturall -____-
Avindra Goolcharan
En effet. Ne devait pas fonctionner sur MacOS. La question concernait uniquement Linux, comme l'a souligné l'affiche originale.
steve
2
np steve. Il suffit de le documenter ici pour les futurs lecteurs. Les différences mineures entre les utilitaires BSD et Linux sont très irritantes. sed est le pire
Avindra Goolcharan
OK merci. si vous avez des idées sur la façon d'inclure la solution MacOS dans la réponse, je la réviserai avec plaisir!
steve
2
J'ai trouvé que pour des en-têtes de colonne particuliers, mettre un =après le nom de la colonne dans le odrapeau est une façon multiplateforme de le faire. Par exemple, ps -p ${pid} -o state=affichera l'état du processus pour ${pid}, sans en-tête. (C'est ce que dit la réponse acceptée :))
Avindra Goolcharan
2

Utilisation

ps -p <PIDs> --no-headers

pour obtenir une liste de PID sans en-tête.

dr01
la source
-1

Pour obtenir une liste des seuls PID, utilisez:

ps -eo pid

Voir également la man pssection «SPECIFICATEURS DE FORMAT STANDARD» pour les colonnes possibles.

Personnellement, j'aime la façon dont Solaris affiche les colonnes possibles à utiliser pour l' -oargument:

ps: option requires an argument -- o
usage: ps [ -aAdefHlcjLPyZ ] [ -o format ] [ -t termlist ]
        [ -u userlist ] [ -U userlist ] [ -G grouplist ]
        [ -p proclist ] [ -g pgrplist ] [ -s sidlist ] [ -z zonelist ] [-h lgrplist]
  'format' is one or more of:
        user ruser group rgroup uid ruid gid rgid pid ppid pgid sid taskid ctid
        pri opri pcpu pmem vsz rss osz nice class time etime stime zone zoneid
        f s c lwp nlwp psr tty addr wchan fname comm args projid project pset lgrp
Lambert
la source
1
Cela ne résout pas le problème de la suppression de l'en-tête qui s'affiche.
Kusalananda
Voilà comment vous interprétez «afficher simplement le PID». Certains peuvent interpréter cela simplement en sélectionnant une colonne, ou comme vous interprétez apparemment: juste des valeurs.
Lambert