Volledige uitvoer van PS-opdracht bekijken

wanneer ik de opdracht ps -auxuitvoer op mijn linux-server, waarmee ik verbinding heb gemaakt via putty, zijn maar weinig processen te lang om in mijn huidige vensterbreedte te passen. Is er een alternatief?

— Bijwerken —

Het spijt me voor het downgraden, ik dacht dat anderen het antwoord ook niet nuttig zouden vinden, dus ik heb het gedowngraded.

Hier is de informatie waar je om vroeg.

hadoop-user@hadoop-desk:~$ echo $TERM
xterm
hadoop-user@hadoop-desk:~$ stty -a
speed 38400 baud; rows 47; columns 158; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
hadoop-user@hadoop-desk:~$ echo $COLUMNS
158

Antwoord 1, autoriteit 100%

Als u de auxww-vlaggen gebruikt, ziet u het volledige pad naar uitvoer in zowel uw terminalvenster als vanuit shellscripts.

darragh@darraghserver ~ $uname -a
SunOS darraghserver 5.10 Generic_142901-13 i86pc i386 i86pc
darragh@darraghserver ~ $which ps
/usr/bin/ps<br>
darragh@darraghserver ~ $/usr/ucb/ps auxww | grep ps
darragh 13680  0.0  0.0 3872 3152 pts/1    O 14:39:32  0:00 /usr/ucb/ps -auxww
darragh 13681  0.0  0.0 1420  852 pts/1    S 14:39:32  0:00 grep ps

ps auxgeeft een overzicht van alle processen die door alle gebruikers worden uitgevoerd. Zie man psvoor details. De vlag wwstelt onbeperkte breedte in.

-w         Wide output. Use this option twice for unlimited width.
w          Wide output. Use this option twice for unlimited width.

Ik vond het antwoord op de volgende blog:
http://www.snowfrog. net/2010/06/10/solaris-ps-output-truncated-at-80-columns/


Antwoord 2, autoriteit 93%

Het is waarschijnlijk dat u een pager gebruikt zoals lessof mostsinds de uitvoer van ps auxis langer dan een screenful. Als dit het geval is, zullen de volgende opties ervoor zorgen (of forceren) dat lange regels teruglopen in plaats van worden afgekapt.

ps aux | less -+S
ps aux | most -w

Als je een van de volgende commando’s gebruikt, worden regels niet omwikkeld, maar kun je je pijltjestoetsen of andere bewegingstoetsen gebruiken om naar links en rechts te scrollen.

ps aux | less -S    # use arrow keys, or Esc-( and Esc-), or Alt-( and Alt-) 
ps aux | most       # use arrow keys, or < and > (Tab can also be used to scroll right)

Regels worden altijd omwikkeld voor moreen pg.

Als ps auxin een pijpleiding wordt gebruikt, is de optie wniet nodig aangezien psalleen schermbreedte gebruikt wanneer de uitvoer naar de terminal is .


Antwoord 3, autoriteit 76%

eenvoudig en perfect:

ps -efww

knipt regel niet af


Antwoord 4, autoriteit 42%

Gooi het gewoon op de kat, die automatisch doorloopt

ps aux | cat

Antwoord 5, autoriteit 9%

Als je het een paar ws doorgeeft, wordt de weergavebreedte genegeerd.


Antwoord 6, autoriteit 8%

Als u het uitvoerformaat handmatig opgeeft, moet u er ook voor zorgen dat de optie argslaatsteis in de lijst met uitvoervelden, anders wordt deze afgekapt.

ps -A -o args,pid,lstartgeeft

/usr/lib/postgresql/9.5/bin 29900 Thu May 11 10:41:59 2017
postgres: checkpointer proc 29902 Thu May 11 10:41:59 2017
postgres: writer process    29903 Thu May 11 10:41:59 2017
postgres: wal writer proces 29904 Thu May 11 10:41:59 2017
postgres: autovacuum launch 29905 Thu May 11 10:41:59 2017
postgres: stats collector p 29906 Thu May 11 10:41:59 2017
[kworker/2:0]               30188 Fri May 12 09:20:17 2017
/usr/lib/upower/upowerd     30651 Mon May  8 09:57:58 2017
/usr/sbin/apache2 -k start  31288 Fri May 12 07:35:01 2017
/usr/sbin/apache2 -k start  31289 Fri May 12 07:35:01 2017
/sbin/rpc.statd --no-notify 31635 Mon May  8 09:49:12 2017
/sbin/rpcbind -f -w         31637 Mon May  8 09:49:12 2017
[nfsiod]                    31645 Mon May  8 09:49:12 2017
[kworker/1:0]               31801 Fri May 12 09:49:15 2017
[kworker/u16:0]             32658 Fri May 12 11:00:51 2017

maar ps -A -o pid,lstart,argsgeeft je de volledige opdrachtregel:

29900 Thu May 11 10:41:59 2017 /usr/lib/postgresql/9.5/bin/postgres -D /tmp/4493-d849-dc76-9215 -p 38103
29902 Thu May 11 10:41:59 2017 postgres: checkpointer process   
29903 Thu May 11 10:41:59 2017 postgres: writer process   
29904 Thu May 11 10:41:59 2017 postgres: wal writer process   
29905 Thu May 11 10:41:59 2017 postgres: autovacuum launcher process   
29906 Thu May 11 10:41:59 2017 postgres: stats collector process   
30188 Fri May 12 09:20:17 2017 [kworker/2:0]
30651 Mon May  8 09:57:58 2017 /usr/lib/upower/upowerd
31288 Fri May 12 07:35:01 2017 /usr/sbin/apache2 -k start
31289 Fri May 12 07:35:01 2017 /usr/sbin/apache2 -k start
31635 Mon May  8 09:49:12 2017 /sbin/rpc.statd --no-notify
31637 Mon May  8 09:49:12 2017 /sbin/rpcbind -f -w
31645 Mon May  8 09:49:12 2017 [nfsiod]
31801 Fri May 12 09:49:15 2017 [kworker/1:0]
32658 Fri May 12 11:00:51 2017 [kworker/u16:0]

Antwoord 7, autoriteit 5%

u kunt het uitvoerformaat instellen, bijvoorbeeld om alleen het commando en de proces-ID te zien.

ps -eo pid,args

zie de man-pagina van ps voor meer uitvoerformaten. als alternatief kunt u de opties -wof --width ngebruiken.

Als al het andere faalt, is hier nog een oplossing (alleen om je lange cmds te zien)

awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],$0 }' /proc/[0-9]*/cmdline

Antwoord 8, autoriteit 2%

Sorry dat ik te laat op het feest was, maar heb zojuist deze oplossing voor het probleem gevonden.

De regels zijn afgekapt omdat ps erop staat de waarde $COLUMNS te gebruiken, zelfs als de uitvoer op dat moment niet het scherm is. Wat een bug is, IMHO. Maar makkelijk te omzeilen, gewoon maken
ps denkt dat je een superbreed scherm hebt, d.w.z. stel KOLOMMEN hoog in voor de duur van het ps-commando. Een voorbeeld:

$ ps -edalf                 # truncates lines to screen width
$ COLUMNS=1000 ps -edalf    # wraps lines regardless of screen width

Ik hoop dat dit nog steeds nuttig is voor iemand. Alle andere ideeën leken veel te ingewikkeld 🙂


Antwoord 9

Als geen van de bovenstaande oplossingen werkt, is de uitvoer van psniet jouw probleem. Misschien moet je putty instellen op lange regels inpakken?

Anders hebben we meer informatie nodig.


Antwoord 10

Als je grephet commando dat je zoekt met een pipe van ps aux gebruikt, zal het de tekst automatisch laten teruglopen. Ik heb veel van de andere antwoorden hier gebruikt, maar soms, als je op zoek bent naar iets specifieks, is het fijn om gewoon grepte gebruiken en je weet dat het regels zal omwikkelen.

Bijvoorbeeld ps aux | grep ffmpeg.


Antwoord 11

Ik vond dit antwoord en dat is wat het voor mij deed omdat geen van de bovenstaande antwoorden werkte

https://unix.stackexchange.com/questions/91561/ps -volledige-opdracht-is-te-lang

Kortom, de kernel beperkt mijn cmd-regel.


Antwoord 12

Bewijs voor inkorting genoemd door anderen, (een persoonlijk voorbeeld)

foo=$(ps -p 689 -o command); echo "$foo"
COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtime/kernel-5732db1a-d484-4a58-9d67-de6ef5ac721b.json

Dat ^^ die lange uitvoer in een variabele vastlegt
In tegenstelling tot

ps -p 689 -o command
COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtim

Omdat ik dit probeerde vanaf een Docker jupyter-notebook, moest ik dit natuurlijk met de knal uitvoeren..

!foo=$(ps -p 689 -o command); echo "$foo"

Verrassend genoeg laten jupyter-notebooks je zelfs dat uitvoeren! Maar ik ben blij dat ik kan helpen het aanstootgevende notitieboekje te vinden dat al mijn geheugen in beslag neemt =D

Other episodes