Jak sformatować wyjście ps -p
polecenia?
Aby nie pokazywać mi czegoś takiego:
PID TTY TIME CMD
ale tylko PID.
Używam Linuksa.
Jak sformatować wyjście ps -p
polecenia?
Aby nie pokazywać mi czegoś takiego:
PID TTY TIME CMD
ale tylko PID.
Używam Linuksa.
Odpowiedzi:
Użyj -o
opcji, aby wybrać kolumny, które mają być wyświetlane. Jeśli wstawisz =
po nazwie kolumny, wiersz nagłówka jest pomijany.
ps -o pid= -p 1 23 456
ps -o pid= -o ppid= -o pgid= -o sid= -p 1 23 456
Użyj, --no-headers
aby pominąć wiersz nagłówka.
Wyjście oryginalne:
ps
PID TTY TIME CMD
27027 pts/0 00:00:00 bash
27071 pts/0 00:00:00 ps
Z --no-headers
:
ps --no-headers
27027 pts/0 00:00:00 bash
27072 pts/0 00:00:00 ps
Łącząc z -p
:
ps -p 1 --no-headers
1 ? 00:00:33 systemd
man
Aktualizacja ps
wyraźnie dokumentuje w ten sposób:
man ps
[snip]
--no-headers
Print no header line at all. --no-heading is an alias for this option.
=
po nazwie kolumny na o
fladze jest na wielu platformach. Np. Pokaże ps -p ${pid} -o state=
stan procesu ${pid}
bez nagłówka. (Tak twierdzi przyjęta odpowiedź :))
Aby uzyskać listę tylko PID, użyj:
ps -eo pid
Zobacz także man ps
rozdział „STANDARDOWE SPECYFIKATORY FORMATU”, aby uzyskać informacje na temat możliwych kolumn.
Osobiście podoba mi się sposób, w jaki Solaris pokazuje możliwe kolumny dla -o
argumentu:
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