Możesz także ps
lepiej obsługiwać dane wyjściowe.
ps --width ${n:-$COLUMNS} ${opts} #set ps terminal width
ps -ww ${opts} #no word wrap
ps -o ${only_interesting_output} ${opts} #trim output
Dzięki temu ps
w razie potrzeby zostanie przetworzone dane wyjściowe zgodnie ze specyfikacjami.
Oczywiście, jeśli nie zawijasz słów, masz problem z brakującymi informacjami. Czy naprawdę potrzebujesz tego wszystkiego do wszystkich procesów? Otwórz go w pager, jeśli tak:
ps ww ${opts} | $PAGER
Jeśli nie, określ, co chcesz zobaczyć:
ps -o args= -p $pid
Alternatywnie możesz wyraźnie poinformować ps
o swoim terminalu --width
:
man ps
...
w
Szeroka wydajność. Użyj tej opcji dwa razy, aby uzyskać nieograniczoną szerokość.
-w
Szeroka wydajność. Użyj tej opcji dwa razy, aby uzyskać nieograniczoną szerokość.
--width n
Ustaw szerokość ekranu.
--width
Rzecz działa dokładnie w wybranym specyfikacji bez konieczności pociąga za sobą żadnych dodatkowych filtrów lub procesów pomocniczych (który będzie prawdopodobnie tylko zaśmiecać -aux
wyjście nawet więcej). I $COLUMNS
jak pokazano powyżej i jak wskazuje Stephane, będzie nawet działać dynamicznie.
Warto jednak zauważyć, że często ludzie próbują dodawać tego rodzaju niepotrzebne filtry, aby umożliwić im przejście |pipe
przez inny filtr w celu przeanalizowania wyników, co również może być niepotrzebne. Oczywiście przez ludzi mam na myśli przede wszystkim siebie.
Argument -o
utput, o którym wspomniałem powyżej, umożliwia filtrowanie ps
wyświetlanych kolumn , a po dodaniu =
przypisania można nawet nazwać kolumnę według własnego uznania. Zostawiam zadanie puste i -p
podaję docelowy proces , $pid
więc jedynym wyjściem ps
jest $pid
nazwa polecenia i jego args
wywołanie. I -o
ledwo rysuje, jak można określić, co ps
będzie wyświetlane, a czego nie. Oto kierunek, który poleciłbym ci wziąć, szczególnie poprzez:
man ps
...
Aby zobaczyć każdy proces w systemie przy użyciu składni BSD:
ps ax
ps axu
Aby wydrukować drzewo procesów:
ps -ejH
ps axjf
Aby uzyskać informacje o wątkach:
ps -eLf
ps axms
Aby uzyskać informacje o bezpieczeństwie:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
Aby zobaczyć każdy proces działający jako root (rzeczywisty i efektywny identyfikator) w formacie użytkownika:
ps -U root -u root u
Aby zobaczyć każdy proces w formacie zdefiniowanym przez użytkownika:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
Wydrukuj tylko identyfikatory procesów syslogd:
ps -C syslogd -o pid=
Wydrukuj tylko nazwę PID 42:
ps -p 42 -o comm=