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
Boolean
sumber
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.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
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/

darraghmurphy
sumber
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
118

sederhana dan sempurna:

ps -efww

tidak akan memotong garis

lumba - lumba
sumber
2
Ini adalah bagian "ww" yang bertanggung jawab untuk output penuh "
9ilsdx 9rvj 0lo
64

Lemparkan saja pada kucing, yang garis-membungkus secara otomatis

ps aux | cat
yoki
sumber
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.

Ignacio Vazquez-Abrams
sumber
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]
dshepherd
sumber
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
ghostdog74
sumber
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 :)

pengguna1932577
sumber
1

Jika tidak ada solusi di atas yang berfungsi, output dari psbukan masalah Anda. Mungkin Anda perlu mengatur dempul untuk membungkus garis panjang ?

Kalau tidak, kami memerlukan informasi lebih lanjut.

Alok Singhal
sumber
Baiklah. Ada sesuatu yang aneh terjadi.
Alok Singhal
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.

carterh062
sumber
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

HeyWatchThis
sumber