Vollständige Befehle in der ps-Ausgabe anzeigen

16

Bei Ausführung psmit der -fOption in PuTTY (um den Befehl für jeden Prozess anzuzeigen) sind Zeilen, die länger als die Terminalbreite sind, nicht vollständig sichtbar (sie werden nicht in mehrere Zeilen eingeschlossen).

Wie kann ich den Zeilenumbruch erzwingen, damit ich beim Ausführen die vollständigen Befehle (ggf. in mehreren Zeilen) sehen kann ps -f?

sdabet
quelle
Keine Antwort, aber wenn ich ps -f in einem verkleinerten Terminalemulator ausführe, wird die Ausgabe in mehrere Zeilen eingeschlossen. Welches Terminal verwenden Sie?
Matthew Rock
1
Dies könnte ein Duplikat von sein: stackoverflow.com/questions/2159860/…
tommygun
@MatthewRock Ich benutze PuTTy hier. Glaubst du, das ist spezifisch dafür?
Sdabet
1
@Tonsenson kann nicht als standortübergreifendes Duplikat geschlossen werden.
Muru
1
@ Fiddler Ah, wir können alte Fragen nicht ohne Intervention des Moderators migrieren, und selbst dann wird es nicht empfohlen: meta.stackexchange.com/questions/8004/…
muru

Antworten:

14

Wenn Sie eine POSIX-konforme psImplementierung haben, können Sie es versuchen

ps -f | more

Beachten Sie, dass wir das Verhalten kürzlich geändert haben. Wenn Sie eine Implementierung haben, die dem POSIX-Problem 7 tc2 folgt, können Sie Folgendes versuchen:

ps -wwf | more

¹ Wir sind die Leute, die wöchentliche Telefonkonferenzen haben, um die Entwicklung des POSIX-Standards zu diskutieren.

schily
quelle
1
ps -wwffunktioniert gut.
Sdabet
8

Ich habe wahrscheinlich die Antwort auf Ihre Frage zu Stack Overflow gefunden . Mit den Worten von Dennis Williamson :

Es ist wahrscheinlich, dass Sie einen Pager wie weniger oder die meisten verwenden, da die Ausgabe von ps aux länger als eine Bildschirmausgabe 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 # Verwenden Sie die Pfeiltasten oder Esc+ (und Esc+ )oder Alt+ (und Alt+)

ps aux | most # Verwenden Sie die Pfeiltasten oder <und >((Tab kann auch zum Scrollen nach rechts verwendet werden). Zeilen werden immer für mehr und pg umbrochen.

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

(Hinweis: Dies gilt für nicht eingebettetes Linux. Das psDienstprogramm für andere Unix-Varianten funktioniert möglicherweise anders.)

Maschinenpistole
quelle
@muru hoffe das sieht jetzt besser aus. Danke, dass du alles geklärt hast!
Tommygun
Und entschuldigen Sie, dass Sie das Chaos verursacht haben.
Matthew Rock
1
Ihre Antwort bezieht sich nur auf /usr/ucb/psund auch bei diesem Programm , das Sie benötigen würde wwals /usr/ucb/psGrenzen der Ausgabebreite auf 80 , wenn der Ausgang ein Rohr ist. Informationen zum POSIX-Standard ps finden Sie in meiner Antwort.
schily
1
@schily Diese Antwort ist vollkommen richtig für den üblichen psBefehl unter nicht eingebettetem Linux, den die Mehrheit der Leser hier hat.
Gilles 'SO - hör auf böse zu sein'
1
Aber das OP hat / linux nicht als Tag gesetzt.
schily
3

Es gibt noch eine andere einfache Lösung:

echo "$(ps afx)"
filmisch
quelle
oder einfachps afx
Nyxee
1
Nur "ps fax" schneidet nach einer bestimmten Anzahl von Zeichen (ich schätze 72 Standard-Terminallängen) die Echo-Syntax "$ (Ihr Befehl)" ab, um sie nicht abzuschneiden
Kino
Dank dafür. Jetzt verhält sich der Befehl unter MacOS (ich höre, er basiert auf BSD) und Ubuntu ( Linux) völlig anders . Linux zeigt keinen Unterschied, wann du bist echooder nicht. MAC OS X druckt jedoch so viel, wie das Terminal anzeigen kann. Ich benutze iTerm2und zsh. MAC erlaubt die --fOption nicht.
Nyxee
3

Versuchen Sie dies der Einfachheit halber: ps auxfww

Fibonacci
quelle
0

Der Befehl für MacOS ist etwas anders echo "$(ps aux)"

Jibeex
quelle
Sie wollen es nicht echounnötig weitergeben. Beachten Sie auch, dass einige andere Antworten bereits ps auxin irgendeiner Weise erwähnt werden. Ich würde Kommentare oder Änderungen zu diesen vorhandenen Antworten vorschlagen, um darauf hinzuweisen, dass sie für MacOS gut sind (was Sie vermutlich gemeint haben).
Jeff Schaller
0

Oder du könntest es tun

IFS='$';for line in $(ps axf); do echo $line; done
Stephane Mailloux
quelle
Ich bin neugierig, warum Sie setzen IFSauf $?
AdminBee