Vollständige Ausgabe des PS-Befehls anzeigen


163

Wenn ich einen ps -auxBefehl auf meinem Linux-Server ausführe , mit dem ich mich mit Putty verbunden habe, sind nur wenige Prozesse zu lang, um in meine aktuelle Fensterbreite zu passen. Gibt es eine Alternative?

- Update -

Es tut mir leid, dass ich ein Downgrade durchgeführt habe. Ich dachte, andere finden die Antwort auch nicht hilfreich, also habe ich ein Downgrade durchgeführt.

Hier sind die Informationen, nach denen Sie gefragt haben.

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

Abgesehen davon haben Sie nur sehr wenige Informationen bereitgestellt, sodass Sie nicht alle Antworten, die Sie bisher erhalten haben, herabstimmen sollten. Wir versuchen Ihnen zu helfen. Sie sollten die Ausgabe der Post echo $TERM, stty -aund echo $COLUMNSin Ihrer Frage.
Alok Singhal

Versuchen Sie stty ocrnlund / oder stty sane?
Alok Singhal

29
ps axuwwDas ist die Antwort;) Zumindest für mich. Das Doppelte wwhat es geschafft.
Brutuscat

Antworten:


145

Es ist wahrscheinlich, dass Sie einen Pager wie lessoder verwenden, mostda die Ausgabe von ps auxlänger als ein Bildschirm ist. In diesem Fall führen die folgenden Optionen dazu, dass lange Zeilen umbrochen werden (oder erzwungen werden), anstatt abgeschnitten zu werden.

ps aux | less -+S

ps aux | most -w

Wenn Sie einen der folgenden Befehle verwenden, werden Zeilen nicht umbrochen, aber Sie können mit den Pfeiltasten oder anderen Bewegungstasten nach links und rechts 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)

Zeilen werden immer für moreund gewickelt pg.

Bei ps auxVerwendung in einer Pipe ist die wOption nicht erforderlich, da psdie Bildschirmbreite nur verwendet wird, wenn die Ausgabe an das Terminal erfolgt.


21
Bitte beachten Sie, dass unter Linux immer noch 4096 Zeichen im Kernel-Code fest codiert sind: siehe stackoverflow.com/questions/199130/…
Mariano Paniga

3
@MarianoPaniga: Du hast mir mit diesem Kommentar das Leben gerettet.
Stapel

die meisten? meinst du mehr
Mike Furlender

@ MikeFurlender: Nein, mostist ein anderer Pager. Ich habe meiner Antwort einen Link hinzugefügt.
Bis auf weiteres angehalten.

@DennisWilliamson Ihre Aussage, wdass Sie bei Verwendung eines Rohrs nicht benötigt werden, scheint systemabhängig zu sein. Sowohl auf openSUSE Leap 15.0 als auch auf Ubuntu 18.04 ps aux | grep <something>wirken Befehle wie auf die Ausgabe von psdurch die Terminalbreite abgeschnitten.
pkeller

149

Mithilfe der auxwwFlags sehen Sie den vollständigen Pfad für die Ausgabe sowohl in Ihrem Terminalfenster als auch in Shell-Skripten.

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 auxlistet alle Prozesse auf, die von allen Benutzern ausgeführt werden. Siehe man psfür Details. Das wwFlag setzt eine unbegrenzte Breite.

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

Ich habe die Antwort im folgenden Blog gefunden:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/


10
Dies ist eine bessere Antwort als die derzeit akzeptierte Lösung, da nicht alle Systeme (Embedded Linux) "die meisten", "mehr" oder "weniger" Pager enthalten.
frakman1

oderps auxf > ps.log
Marslo

118

einfach und perfekt:

ps -efww

schneidet die Linie nicht ab


2
Dies ist der "ww" Teil, der für die volle Ausgabe verantwortlich ist "
9ilsdx 9rvj 0lo

64

Wirf es einfach auf die Katze, die die Zeilen automatisch umschließt

ps aux | cat

Sie können ein, aber mehr ausarbeiten.
MZaragoza

10
Gute Lösung für leichte Linux-Distributionen wie BusyBox, wo fortgeschrittene Tools nicht verfügbar sind :)
Lion

leicht zu merken!
fzN

Sehr sehr einfach. catBefehl ist auf jeder Nix-Box da draußen.
Ligemer

15

Wenn Sie es einige wSekunden lang übergeben, wird die Anzeigebreite ignoriert.


Haben Sie versucht, mehr als eine hinzuzufügen?
Ignacio Vazquez-Abrams

Ich habe versucht, mehr als 5 hinzuzufügen. Aber irgendwie wird nicht der vollständige Befehl angezeigt.
Boolean

1
Sobald Sie 3 erreicht haben, sehen Sie alles, was es gibt. Nichts anderes als das, was es dort zeigt, ist für ein Programm sichtbar . Sie haben ein anderes Problem.
Ignacio Vazquez-Abrams

11

Wenn Sie das Ausgabeformat manuell angeben, müssen Sie auch sicherstellen, dass die argsOption in der Liste der Ausgabefelder an letzter Stelle steht. Andernfalls wird sie abgeschnitten.

ps -A -o args,pid,lstart gibt

/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

Aber ps -A -o pid,lstart,argsSie erhalten die vollständige Befehlszeile:

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]

9

Sie können das Ausgabeformat festlegen, z. B. um nur den Befehl und die Prozess-ID anzuzeigen.

ps -eo pid,args

Weitere Ausgabeformate finden Sie in der Manpage von ps. Alternativ können Sie die Optionen -woder verwenden --width n.

Wenn alles andere fehlschlägt, finden Sie hier eine weitere Problemumgehung (nur um Ihre langen cmds zu sehen).

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

1
Ändern Sie die Reihenfolge und versuchen Sie es erneut, pid, args
ghostdog74

3

Es tut mir leid, dass ich zu spät zur Party komme, aber ich habe gerade diese Lösung für das Problem gefunden.

Die Zeilen werden abgeschnitten, da ps darauf besteht, den Wert von $ COLUMNS zu verwenden, auch wenn die Ausgabe zu diesem Zeitpunkt nicht der Bildschirm ist. Welches ist ein Fehler, IMHO. Aber einfach zu umgehen, lassen Sie ps einfach denken, Sie hätten einen superweiten Bildschirm, dh setzen Sie COLUMNS für die Dauer des ps-Befehls hoch. Ein Beispiel:

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

Ich hoffe das ist noch nützlich für jemanden. Alle anderen Ideen schienen viel zu kompliziert :)


1

Wenn keine der oben genannten Lösungen funktioniert, ist die Ausgabe von psnicht Ihr Problem. Möglicherweise müssen Sie Kitt setzen, um lange Linien zu wickeln ?

Ansonsten benötigen wir weitere Informationen.


Naja. Es ist etwas Seltsames los.
Alok Singhal

1

Wenn Sie grepden Befehl, den Sie suchen, mit einer Pipe von ps aux verwenden, wird der Text automatisch umgebrochen. Ich habe viele der anderen Antworten hier verwendet, aber manchmal, wenn Sie nach etwas Bestimmtem suchen, ist es schön, es einfach zu verwendengrep und Sie wissen, dass es Zeilen umschließt.

Zum Beispiel ps aux | grep ffmpeg.



0

Von anderen erwähnte Beweise für Kürzungen (ein persönliches Beispiel)

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

Das ^^ erfasst diese lange Ausgabe in einer Variablen im Gegensatz zu

ps -p 689 -o command

COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtim

Da ich dies von einem Docker-Jupiter-Notebook aus versuchte, musste ich dies natürlich mit dem Knall ausführen.

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

Überraschenderweise können Sie mit Jupyter-Notebooks sogar das ausführen! Aber ich bin froh zu helfen, das störende Notizbuch zu finden, das mein gesamtes Gedächtnis beansprucht = D.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.