Spaltennamen in der ps-Ausgabe deaktivieren

22

Wie formatiere ich die Ausgabe eines ps -pBefehls?

Um mir so etwas nicht zu zeigen:

PID TTY                TIME CMD

aber nur PIDs.

Ich benutze Linux.

TicTacToe
quelle

Antworten:

35

Verwenden Sie die -oOption, um auszuwählen, welche Spalten angezeigt werden. Wenn Sie =nach dem Spaltennamen setzen, wird die Kopfzeile unterdrückt.

ps -o pid= -p 1 23 456
ps -o pid= -o ppid= -o pgid= -o sid= -p 1 23 456
Gilles 'SO - hör auf böse zu sein'
quelle
Diese Antwort hat den Vorteil, dass sie portabel ist (unterstützt von BSDs und spezifiziert von POSIX .
Anthony G - Gerechtigkeit für Monica,
20

Verwenden Sie --no-headers, um die Kopfzeile wegzulassen.

Originalausgabe:

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

Mit --no-headers:

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

Kombinierbar mit -p:

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

Die manSeite für psdokumentiert dies eindeutig:

man ps

[snip]

 --no-headers
          Print no header line at all.  --no-heading is an alias for this option.
Steve
quelle
2
Funktioniert nicht auf Macs. Naturall -____-
Avindra Goolcharan
Tatsächlich. Es wurde nicht erwartet, dass es unter MacOS funktioniert. Die Frage betraf ausschließlich Linux, wie auf dem Originalposter hervorgehoben.
Steve
2
np steve. Ich dokumentiere es hier nur für zukünftige Leser. Der geringfügige Unterschied zwischen BSD- und Linux-Utils ist äußerst irritierend. sed ist das Schlimmste
Avindra Goolcharan
OK danke. Wenn Sie darüber nachdenken, wie Sie die MacOS-Lösung in die Antwort aufnehmen können, werde ich sie gerne überarbeiten!
Steve
2
Ich fand, dass für bestimmte Spaltenüberschriften das Setzen eines =nach dem Spaltennamen auf das oFlag eine plattformübergreifende Möglichkeit ist, dies zu tun. ZB ps -p ${pid} -o state=wird der Prozessstatus für ${pid}ohne den Header angezeigt. (Was ist, was die akzeptierte Antwort besagt :))
Avindra Goolcharan
2

Verwenden

ps -p <PIDs> --no-headers

um eine Liste der PIDs ohne den Header zu erhalten.

dr01
quelle
-1

Um eine Liste nur der PIDs zu erhalten, verwenden Sie:

ps -eo pid

Siehe auch man psAbschnitt 'STANDARDFORMAT SPEZIFIKATOREN' für mögliche Spalten.

Persönlich gefällt mir, wie Solaris die möglichen Spalten für das -oArgument anzeigt :

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
quelle
1
Hiermit wird das Problem des Entfernens der angezeigten Kopfzeile nicht behoben.
Kusalananda
So interpretieren Sie "nur PID anzeigen". Einige können dies so interpretieren, dass sie nur eine Spalte auswählen, oder so, wie Sie es anscheinend interpretieren: Nur Werte.
Lambert,