PS komutunun tam çıktısını görüntüleme


163

ps -auxmacunu kullanarak bağlandığım linux sunucumda komut çalıştırdığımda , birkaç pencere geçerli pencere genişliğime sığmayacak kadar uzun. Bir alternatif var mı?

-- Güncelleme --

Sürüm düşürdüğüm için üzgünüm, başkalarının da cevabı faydalı bulamayacağını düşündüm, bu yüzden sürüm düşürdüm.

İşte istediğiniz bilgi.

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

Bir kenara, çok az bilgi verdiniz, bu yüzden şimdiye kadar aldığınız tüm cevapları aşağıya düşürmemelisiniz. Size yardım etmeye çalışıyoruz. Sen çıktısını gönderilmesi gerekiyor echo $TERM, stty -ave echo $COLUMNSsorunuzu.
Alok Singhal

Deneyin stty ocrnlve / veya stty sane?
Alok Singhal

29
ps axuwwCevap bu;) En azından benim için. İki katına çıkardı ww.
brutuscat

Yanıtlar:


145

Bu gibi bir çağrı cihazı kullanıyorsanız olasıdır lessveya mostçıkışında beri ps auxartık bir screenful aşıyor. Öyleyse, aşağıdaki seçenekler uzun çizgilerin kesilmek yerine sarılmasına neden olur (veya zorlar).

ps aux | less -+S

ps aux | most -w

Aşağıdaki komutlardan birini kullanırsanız, satırlar kaydırılmaz ancak sola ve sağa kaydırmak için ok tuşlarınızı veya diğer hareket tuşlarınızı kullanabilirsiniz.

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)

Çizgiler her zaman moreve için sarılır pg.

Bir ps auxboruda kullanıldığında, yalnızca terminale çıkış olduğunda ekran genişliğini kullandığından wseçenek gereksizdir ps.


21
Linux'ta hala çekirdek kodunda sabit kodlanmış 4096 karakterlik bir sınır olduğunu unutmayın: bkz. Stackoverflow.com/questions/199130/…
Mariano Paniga

3
@MarianoPaniga: Bu yorumla hayatımı kurtardın.
yığın

çoğu? daha mı demek istiyorsun
Mike Furlender

@MikeFurlender: Hayır, mostbaşka bir çağrı cihazı. Cevabıma bir link ekledim.
sonraki duyuruya kadar duraklatıldı.

@DennisWilliamson wBir boru kullanırken ihtiyaç duyulmadığına dair açıklamanız sisteme bağlı görünüyor. Hem openSUSE Leap 15.0 hem de Ubuntu 18.04'te, terminal genişliği tarafından kesilmiş ps aux | grep <something>çıktı gibi davranır ps.
19:44

149

auxwwBayrakları kullanarak, hem terminal pencerenizde hem de kabuk komut dosyalarında çıktı alınacak tam yolu görürsünüz.

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 auxtüm kullanıcılar tarafından yürütülen tüm işlemleri listeler. Ayrıntılar man psiçin bakınız. wwBayrak sınırsız genişliğini ayarlar.

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

Cevabı şu blogda buldum:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/


10
Bu, geçerli kabul edilen çözümden daha iyi bir yanıttır çünkü tüm sistemler (gömülü linux) 'en', 'daha fazla' veya 'daha az' çağrı cihazı içermez.
frakman1

veya,ps auxf > ps.log
Marslo


64

Sadece onu otomatik olarak saran kedinin üzerine at

ps aux | cat

ayrıntılandırabilirsiniz, ama daha fazlası.
MZaragoza

10
Gelişmiş araçların mevcut olmadığı BusyBox gibi hafif linux dağıtımları için iyi bir çözüm :)
Lion

hatırlaması kolay!
fzN

Çok çok basit. catkomut her nix kutusunda var.
Ligemer

15

Birkaç wsaniye geçtikten sonra ekran genişliği dikkate alınmaz.


Birden fazla eklemeyi denediniz mi?
Ignacio Vazquez-Abrams

5'ten fazla eklemeyi denedim. Ancak bir şekilde tam komutu göstermiyor.
Boolean

1
Bir kez 3 olsun tüm orada olduğunu görüyorsun. Gösterdiği şeyin ötesinde hiçbir şey herhangi bir program tarafından görülemez . Farklı bir sorununuz var.
Ignacio Vazquez-Abrams

11

Çıktı biçimini manuel olarak belirlerseniz, argsseçeneğin çıktı alanları listesinde son , aksi takdirde kesilir.

ps -A -o args,pid,lstart verir

/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

ancak ps -A -o pid,lstart,argstam komut satırını alır:

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

örneğin yalnızca komutu ve işlem kimliğini görmek için çıktı biçimini ayarlayabilirsiniz.

ps -eo pid,args

daha fazla çıktı biçimi için ps'nin man sayfasına bakınız. alternatif olarak -wveya--width n seçeneklerini .

Her şey başarısız olursa, işte başka bir çözüm, (sadece uzun cmd'lerinizi görmek için)

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

1
sırasını değiştirmek ve tekrar deneyin, pid, args
ghostdog74 29:10

3

Partiye geç kaldığım için özür dilerim ama soruna bu çözümü buldum.

Satırlar o anda çıktı olmasa bile, ps $ COLUMNS değerini kullanmakta ısrar ettiğinden satırlar kesildi. Bu bir hata, IMHO. Ama etrafında çalışmak kolay, sadece ps süper geniş bir ekrana sahip olduğunu düşünüyorum yapmak, yani ps komutu boyunca COLUMNS yüksek ayarlayın. Bir örnek:

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

Umarım bu hala birileri için faydalıdır. Diğer tüm fikirler çok karmaşık görünüyordu :)


1

Yukarıdaki çözümlerin hiçbiri işe yaramıyorsa, çıktısı pssizin probleminiz değildir. Belki uzun çizgileri sarmak için macun ayarlamanız gerekir ?

Aksi takdirde daha fazla bilgiye ihtiyacımız var.


Oh iyi. Tuhaf bir şeyler oluyor.
Alok Singhal

1

Eğer grepps aux'tan bir kanalla aradığınız komut, metni otomatik olarak sarar. Burada diğer cevapların çoğunu kullandım, ancak bazen belirli bir şey arıyorsanız, sadece kullanmak güzel grepve satırları kapatacağını biliyorsunuz.

Mesela ps aux | grep ffmpeg.



0

Başkaları tarafından belirtilen kesilme kanıtı, (kişisel bir örnek)

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

Bu ^^ bir değişkenin uzun çıktısını tersine

ps -p 689 -o command

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

Bunu bir Docker jupyter defterinden denediğim için, bunu elbette patlama ile çalıştırmam gerekiyordu.

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

Şaşırtıcı bir şekilde jupyter dizüstü bilgisayarlar bile bunu yürütmenize izin verir! Ama tüm hafızamı alan rahatsız edici dizüstü bilgisayarı bulmanıza yardımcı olmaktan mutluluk duyuyorum = D

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.