Możesz także pslepiej 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 psw 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ć pso 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.
--widthRzecz 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ć -auxwyjście nawet więcej). I $COLUMNSjak 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 |pipeprzez 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 -output, o którym wspomniałem powyżej, umożliwia filtrowanie pswyświetlanych kolumn , a po dodaniu =przypisania można nawet nazwać kolumnę według własnego uznania. Zostawiam zadanie puste i -ppodaję docelowy proces , $pidwięc jedynym wyjściem psjest $pidnazwa polecenia i jego argswywołanie. I -oledwo rysuje, jak można określić, co psbę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=