Melihat output penuh dari perintah PS


163

ketika saya menjalankan ps -auxperintah pada server linux saya, yang saya hubungkan menggunakan dempul, beberapa proses terlalu panjang untuk masuk ke dalam lebar jendela saya saat ini. Apakah ada alternatif?

- Perbarui -

Saya minta maaf karena menurunkan peringkat, saya pikir orang lain tidak akan menemukan jawaban yang berguna juga, jadi saya menurunkan peringkat.

Ini info yang Anda minta.

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

Selain itu, Anda telah memberikan informasi yang sangat sedikit, sehingga Anda tidak perlu memvoting semua jawaban yang Anda dapatkan sejauh ini. Kami berusaha membantu Anda. Anda harus posting output dari echo $TERM, stty -adan echo $COLUMNSdalam pertanyaan Anda.
Alok Singhal

Coba stty ocrnldan / atau stty sane?
Alok Singhal

29
ps axuwwItulah jawabannya;) Setidaknya bagi saya. Yang dua kali lipat wwmelakukannya.
brutuscat

Jawaban:


145

Kemungkinan Anda menggunakan pager seperti lessatau mostkarena output ps auxlebih 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    # 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)

Garis selalu dibungkus untuk moredan pg.

Ketika ps auxdigunakan dalam pipa, wopsi tidak perlu karena pshanya menggunakan lebar layar ketika output ke terminal.


21
Harap dicatat bahwa di Linux masih ada batas 4096 karakter yang dikodekan dalam kode kernel: lihat stackoverflow.com/questions/199130/…
Mariano Paniga

3
@MarianoPaniga: Anda menyelamatkan hidup saya dengan komentar itu.
stackular

paling? Apakah maksud Anda lebih banyak?
Mike Furlender

@MikeFurlender: Tidak, mostadalah pager lain. Saya menambahkan tautan dalam jawaban saya.
Dijeda sampai pemberitahuan lebih lanjut.

@DennisWilliamson Pernyataan Anda tentang wtidak diperlukan saat menggunakan pipa tampaknya bergantung pada sistem. Pada openSUSE Leap 15.0 dan Ubuntu 18.04, perintah seperti ps aux | grep <something>act pada output psterpotong oleh lebar terminal.
pkeller

149

Dengan menggunakan auxwwflag, Anda akan melihat path lengkap ke output di kedua jendela terminal Anda dan dari skrip shell.

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 auxdaftar semua proses yang dijalankan oleh semua pengguna. Lihat man psdetailnya. The wwflag set lebar terbatas.

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

Saya menemukan jawabannya di blog berikut:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/


10
Ini adalah jawaban yang lebih baik daripada solusi yang diterima saat ini karena tidak semua sistem (embedded linux) termasuk pager 'paling', 'lebih' atau 'kurang'.
frakman1

atau,ps auxf > ps.log
Marslo


64

Lemparkan saja pada kucing, yang garis-membungkus secara otomatis

ps aux | cat

Anda bisa menguraikan, tetapi lebih.
MZaragoza

10
Solusi yang bagus untuk distribusi linux ringan seperti BusyBox, di mana alat-alat canggih tidak tersedia :)
Lion

mudah diingat juga!
fzN

Sangat sangat sederhana. catperintah ada di setiap kotak nix di luar sana.
Ligemer

15

Melewati beberapa wdetik akan mengabaikan lebar layar.


Apakah Anda mencoba menambahkan lebih dari satu?
Ignacio Vazquez-Abrams

Saya mencoba menambahkan lebih dari 5. tetapi entah bagaimana itu tidak menunjukkan perintah lengkap.
Boolean

1
Setelah Anda sampai ke 3 Anda melihat semua yang ada. Tidak ada yang melampaui apa yang terlihat di sana yang terlihat oleh program apa pun . Anda memiliki masalah yang berbeda.
Ignacio Vazquez-Abrams

11

Jika Anda menentukan format output secara manual, Anda juga perlu memastikan argsopsi terakhir dalam daftar bidang output, jika tidak maka akan terpotong.

ps -A -o args,pid,lstart memberi

/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

tetapi ps -A -o pid,lstart,argsmemberi Anda baris perintah penuh:

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

Anda dapat mengatur format output, mis. hanya untuk melihat perintah dan id proses.

ps -eo pid,args

lihat halaman manual ps untuk format keluaran lebih lanjut. sebagai alternatif, Anda dapat menggunakan opsi -watau --width n.

Jika semuanya gagal, inilah solusi lain, (hanya untuk melihat cmds panjang Anda)

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

1
ubah urutan dan coba lagi, pid, args
ghostdog74

3

Maaf terlambat ke pesta tetapi baru saja menemukan solusi untuk masalah ini.

Garis terpotong karena ps bersikeras menggunakan nilai $ COLUMNS, bahkan jika output bukan layar pada saat itu. Yang merupakan bug, IMHO. Namun mudah untuk dikerjakan, buat saja ps berpikir Anda memiliki layar superwide, yaitu atur COLUMNS tinggi selama durasi perintah ps. Sebuah contoh:

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

Saya harap ini masih berguna bagi seseorang. Semua ide lain sepertinya terlalu rumit :)



1

Jika Anda grepperintah yang Anda cari dengan pipa dari ps aux, itu akan membungkus teks secara otomatis. Saya menggunakan banyak jawaban lain di sini, tetapi kadang-kadang jika Anda mencari sesuatu yang spesifik, itu baik untuk digunakan grepdan Anda tahu bahwa itu akan membungkus baris.

Misalnya ps aux | grep ffmpeg.



0

Bukti pemotongan yang disebutkan oleh orang lain, (contoh pribadi)

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

Itu ^^ menangkap output yang lama dalam sebuah variabel

ps -p 689 -o command

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

Karena saya mencoba ini dari notebook jupyter Docker, saya perlu menjalankan ini dengan bang tentu saja ..

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

Notebook jupyter yang mengejutkan memungkinkan Anda mengeksekusi bahkan itu! Tapi senang membantu menemukan notebook yang menyinggung mengambil semua ingatanku = D

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.