Zobacz pełne polecenia w danych wyjściowych ps

18

Podczas pracy psz -fopcją w PuTTY (aby zobaczyć polecenie odpowiadające każdemu procesowi), linie dłuższe niż szerokość terminala nie są w pełni widoczne (nie są zawijane w wiele linii).

Jak wymusić zawijanie linii, aby podczas uruchamiania wyświetlać pełne polecenia (w wielu wierszach, jeśli to konieczne) ps -f?

sdabet
źródło
Nie jest to odpowiedź, ale jeśli uruchomię ps -f w emulatorze z ograniczonym terminalem, dane wyjściowe są pakowane w wiele wierszy. Z jakiego terminala korzystasz?
MatthewRock
1
Może to być duplikat: stackoverflow.com/questions/2159860/…
tommygun
@MatthewRock Korzystam z PuTTy tutaj, czy uważasz, że jest to specyficzne?
sdabet
1
@Tonsenson nie może zostać zamknięty jako duplikat między witrynami.
muru
1
@fiddler ah, nie możemy migrować starych pytań bez interwencji moderatora, a nawet wtedy nie jest to zalecane: meta.stackexchange.com/questions/8004/…
muru

Odpowiedzi:

16

Jeśli masz psimplementację zgodną z POSIX , możesz spróbować

ps -f | more

Zauważ, że ostatnio zmieniliśmy zachowanie i jeśli masz implementację zgodną z POSIX wydanie 7 tc2, możesz spróbować:

ps -wwf | more

¹ Jesteśmy ludźmi, którzy mają cotygodniowe telekonferencje w celu omówienia ewolucji standardu POSIX.

schily
źródło
1
ps -wwfdziała dobrze.
sdabet
8

Prawdopodobnie znalazłem odpowiedź na twoje pytanie dotyczące przepełnienia stosu . Słowami Dennisa Williamsona :

Prawdopodobnie używasz pagera, takiego jak mniejszy lub większy, ponieważ wyjście ps aux jest dłuższe niż ekran. Jeśli tak, poniższe opcje spowodują (lub wymuszą) zawijanie długich linii zamiast ich obcinania.

ps aux | less -+S

ps aux | most -w Jeśli użyjesz jednego z poniższych poleceń, linie nie zostaną zawinięte, ale możesz używać klawiszy strzałek lub innych klawiszy ruchu do przewijania w lewo i w prawo.

ps aux | less -S # użyj klawiszy strzałek lub Esc+ (i Esc+ )lub Alt+ (i Alt+)

ps aux | most # użyj klawiszy strzałek, lub <i >(Tab może być również używany do przewijania w prawo) Linie są zawsze zawijane dla więcej i str.

Gdy ps auxjest używany w potoku, opcja w jest niepotrzebna, ponieważ ps używa szerokości ekranu tylko wtedy, gdy wyjście jest przesyłane do terminala.

(Uwaga: dotyczy to niewbudowanego systemu Linux, psnarzędzie w innych wariantach Uniksa może działać inaczej).

tommygun
źródło
@muru mam nadzieję, że teraz wygląda to lepiej. Dzięki za wyjaśnienie!
tommygun
I przepraszam za spowodowanie bałaganu.
MatthewRock
1
Twoja odpowiedź dotyczy tylko /usr/ucb/psi nawet z tym programem będzie trzeba wwjak /usr/ucb/psgranicach szerokości wyjściowej do 80, jeśli wyjście jest rura. Dla standardu ps POSIX, patrz moja odpowiedź.
schily
1
@schily Ta odpowiedź jest całkowicie poprawna dla zwykłego pspolecenia w niewbudowanym systemie Linux, co ma większość obecnych tutaj czytelników.
Gilles „SO- przestań być zły”
1
Ale OP nie ustawił / linux jako tag.
schily
3

Istnieje również inne proste rozwiązanie:

echo "$(ps afx)"
kinowy
źródło
lub po prostups afx
nyxee
1
tylko „ps fax” zostanie odcięty po określonej liczbie znaków (chyba 72 standardowa długość terminala) echo składni „$ (twoje polecenie)” nie pozwala na odcięcie
filmowy
Dziękuję za to. Teraz polecenie zachowuje się zupełnie inaczej na MacOS (słyszę, że jest oparty na BSD) i Ubuntu ( Linux). Linux nie pokazuje żadnej różnicy, kiedy jesteś echo. Ale MAC OS X drukuje tyle, ile może pokazać terminal. Używam iTerm2i zsh. MAC nie zezwala na tę --fopcję.
nyxee
3

Dla uproszczenia spróbuj tego: ps auxfww

fibonacci
źródło
0

Polecenie dla MacOS jest nieco inne echo "$(ps aux)"

Jibeex
źródło
Nie chcesz tego echoniepotrzebnie przepuszczać . Zauważ też, że kilka innych odpowiedzi już ps auxw jakiś sposób wspomina . Sugeruję komentarze lub zmiany do tych istniejących odpowiedzi, aby wskazać, że są one dobre dla MacOS (co, jak zakładam, miałeś na myśli).
Jeff Schaller
0

Lub możesz to zrobić

IFS='$';for line in $(ps axf); do echo $line; done
Stephane Mailloux
źródło
Jestem ciekaw, dlaczego ustawienie IFSsię $?
AdminBee