Lihat perintah lengkap dalam output ps

17

Saat menjalankan psdengan -fopsi di Putty (untuk melihat perintah yang sesuai untuk setiap proses), garis yang lebih panjang dari lebar terminal tidak sepenuhnya terlihat (tidak dibungkus pada beberapa garis).

Bagaimana saya bisa memaksa pembungkus baris sehingga saya bisa melihat perintah lengkap (pada banyak baris, jika perlu) saat menjalankan ps -f?

sdabet
sumber
Bukan jawaban, tetapi jika saya menjalankan ps -f di emulator terminal menyusut, output dibungkus pada beberapa baris. Terminal apa yang Anda gunakan?
MatthewRock
1
Ini bisa jadi duplikat dari: stackoverflow.com/questions/2159860/…
tommygun
@ MatthewRock Saya menggunakan Putty di sini, apakah Anda pikir ini khusus untuk itu?
sdabet
1
@Tonsenson tidak dapat ditutup sebagai duplikat lintas situs.
muru
1
@fiddler ah, kami tidak dapat memigrasikan pertanyaan lama tanpa intervensi moderator, dan meskipun itu tidak disarankan: meta.stackexchange.com/questions/8004/…
muru

Jawaban:

16

Jika Anda memiliki psimplementasi yang sesuai dengan POSIX , Anda dapat mencoba

ps -f | more

Perhatikan bahwa kami baru saja mengubah perilaku dan jika Anda memiliki implementasi yang mengikuti POSIX edisi 7 tc2, Anda dapat mencoba:

ps -wwf | more

¹ Kami menjadi orang-orang yang mengadakan telekonferensi mingguan untuk membahas perkembangan standar POSIX.

schily
sumber
1
ps -wwfberfungsi dengan baik.
sdabet
8

Saya mungkin menemukan jawaban untuk pertanyaan Anda tentang Stack Overflow . Dalam kata-kata Dennis Williamson :

Kemungkinan Anda menggunakan pager seperti kurang atau sebagian karena output ps aux lebih panjang dari screenful. Jika demikian, opsi berikut ini akan menyebabkan (atau memaksa) garis panjang untuk membungkus bukannya terpotong.

ps aux | less -+S

ps aux | most -w Jika Anda menggunakan salah satu dari perintah berikut, garis tidak akan dibungkus tetapi Anda dapat menggunakan tombol panah atau tombol gerakan lainnya untuk menggulir ke kiri dan kanan.

ps aux | less -S # gunakan tombol panah, atau Esc+ (dan Esc+ ), atau Alt+ (dan Alt+)

ps aux | most # gunakan tombol panah, atau <dan >(Tab juga dapat digunakan untuk menggulir ke kanan) Baris selalu dibungkus untuk lebih dan pg.

Ketika ps auxdigunakan dalam pipa, opsi w tidak perlu karena ps hanya menggunakan lebar layar ketika output ke terminal.

(Catatan: ini berlaku untuk Linux yang tidak tertanam, psutilitas pada varian Unix lain dapat bekerja secara berbeda.)

tommygun
sumber
@muru harap ini sekarang terlihat lebih baik. Terima kasih sudah membereskan semuanya!
tommygun
Dan maaf karena menyebabkan kekacauan.
MatthewRock
1
Jawaban Anda hanya berlaku untuk /usr/ucb/psdan bahkan dengan program ini Anda akan perlu wwsebagai /usr/ucb/psbatas lebar output ke 80 jika output adalah pipa. Untuk standar POSIX ps, lihat jawaban saya.
schily
1
@schily Jawaban ini sangat tepat untuk psperintah biasa pada Linux yang tidak tertanam, yang dimiliki oleh mayoritas pembaca di sini.
Gilles 'SO- stop being evil'
1
Tetapi OP tidak menetapkan / linux sebagai tag.
schily
3

Ada juga solusi sederhana lainnya:

echo "$(ps afx)"
sinematik
sumber
atau hanyaps afx
nyxee
1
hanya "ps fax" yang akan dipotong setelah sejumlah karakter (saya kira 72 panjang terminal standar) gema "$ (perintah Anda)" sintaksinya adalah untuk tidak memotongnya
cin
Terima kasih untuk itu. Sekarang, perintahnya berperilaku sangat berbeda pada MacOS (saya dengar berdasarkan BSD) dan Ubuntu ( Linux). Linux tidak menunjukkan perbedaan kapan echoatau tidak. Tapi, MAC OS X mencetak sebanyak yang bisa ditunjukkan terminal. Saya menggunakan iTerm2dan zsh. MAC tidak mengizinkan --fopsi.
nyxee
3

Untuk kesederhanaan, coba ini: ps auxfww

fibonacci
sumber
0

Perintah untuk MacOS sedikit berbeda echo "$(ps aux)"

Jibeex
sumber
Anda tidak ingin melewatinya dengan echotidak perlu. Perhatikan juga bahwa beberapa jawaban lain sudah disebutkan ps auxdalam beberapa cara. Saya akan menyarankan komentar atau pengeditan pada jawaban yang ada untuk menunjukkan bahwa mereka baik untuk MacOS (yang saya anggap Anda maksud).
Jeff Schaller
0

Atau Anda bisa melakukannya

IFS='$';for line in $(ps axf); do echo $line; done
Stephane Mailloux
sumber
Saya ingin tahu, mengapa Anda menetapkan IFSke $?
AdminBee