ดูผลลัพธ์เต็มรูปแบบของคำสั่ง PS


163

เมื่อฉันรันps -auxคำสั่งบนเซิร์ฟเวอร์ linux ของฉันซึ่งฉันเชื่อมต่อโดยใช้ putty กระบวนการจำนวนน้อยเกินไปที่จะพอดีกับความกว้างหน้าต่างปัจจุบันของฉัน มีทางเลือกอื่นหรือไม่?

- อัปเดต -

ฉันขอโทษสำหรับการลดระดับฉันคิดว่าคนอื่นจะไม่พบคำตอบที่เป็นประโยชน์เช่นกันดังนั้นฉันจึงลดระดับ

นี่คือข้อมูลที่คุณขอ

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

คุณได้ให้ข้อมูลน้อยมากดังนั้นคุณจึงไม่ควรลดคำตอบทั้งหมดที่คุณได้รับ เรากำลังพยายามช่วยคุณ คุณควรโพสต์การส่งออกของecho $TERM, stty -aและecho $COLUMNSในคำถามของคุณ
Alok Singhal

ลองstty ocrnlและ / หรือstty sane?
Alok Singhal

29
ps axuwwนั่นคือคำตอบ;) อย่างน้อยสำหรับฉัน wwมันเพิ่มเป็นสองเท่า
brutuscat

คำตอบ:


145

มีโอกาสที่คุณจะใช้เพจเจอร์เช่นlessหรือmostเนื่องจากเอาต์พุตของps auxยาวกว่าหน้าจอ หากเป็นเช่นนั้นตัวเลือกต่อไปนี้จะทำให้ (หรือบังคับ) บรรทัดยาวที่จะตัดคำแทนที่จะถูกตัดทอน

ps aux | less -+S

ps aux | most -w

หากคุณใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้บรรทัดจะไม่ถูกห่อ แต่คุณสามารถใช้ปุ่มลูกศรหรือปุ่มเคลื่อนไหวอื่น ๆ เพื่อเลื่อนไปทางซ้ายและขวา

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)

สายถูกห่อเสมอและmorepg

เมื่อps auxใช้ในไพพ์, wตัวเลือกไม่จำเป็นเนื่องจากpsใช้ความกว้างหน้าจอเฉพาะเมื่อเอาต์พุตอยู่ที่เทอร์มินัล


21
โปรดทราบว่าในลินุกซ์ยังมีข้อ จำกัด ของรหัส 4096 ตัวอักษรในรหัสเคอร์เนล: ดูstackoverflow.com/questions/199130/…
Mariano Paniga

3
@MarianoPaniga: คุณช่วยชีวิตฉันด้วยความคิดเห็นนั้น
stackular

มากที่สุด? คุณหมายถึงอะไรเพิ่มเติม
Mike Furlender

@MikeFurlender: ไม่mostเป็นเพจเจอร์อื่น ฉันเพิ่มลิงค์ในคำตอบของฉัน
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

@DennisWilliamson คำสั่งของคุณเกี่ยวกับการwไม่จำเป็นเมื่อใช้ไปป์ดูเหมือนว่าจะขึ้นอยู่กับระบบ ทั้ง openSUSE Leap 15.0 และ Ubuntu 18.04 คำสั่งเช่นps aux | grep <something>ดำเนินการกับผลลัพธ์ของการpsตัดทอนโดยความกว้างของขั้ว
pkeller

149

เมื่อใช้auxwwแฟล็กคุณจะเห็นพา ธ เต็มเพื่อแสดงผลทั้งในหน้าต่างเทอร์มินัลและจากสคริปต์เชลล์

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 auxแสดงกระบวนการทั้งหมดที่ดำเนินการโดยผู้ใช้ทั้งหมด ดูman psรายละเอียดที่ wwธงกำหนดความกว้างไม่ จำกัด

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

ฉันพบคำตอบในบล็อกต่อไปนี้:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/


10
นี่เป็นคำตอบที่ดีกว่าโซลูชันที่ได้รับการยอมรับในปัจจุบันเพราะระบบทั้งหมด (ลินุกซ์ในตัว) ไม่ได้รวมเพจเจอร์ที่ 'มากที่สุด', 'มาก' หรือ 'น้อย'
frakman1

หรือps auxf > ps.log
Marslo

118

ง่ายและสมบูรณ์แบบ:

ps -efww

จะไม่ตัดทอนบรรทัด


2
นี่คือส่วน "ww" ที่รับผิดชอบการแสดงผลเต็ม "
9ilsdx 9rvj 0lo

64

เพียงแค่โยนมันลงบนแมวซึ่งเส้นจะตัดโดยอัตโนมัติ

ps aux | cat

คุณสามารถทำอย่างละเอียด แต่เพิ่มเติม
MZaragoza

10
ทางออกที่ดีสำหรับการแจกแจงลินุกซ์ที่มีน้ำหนักเบาเช่น BusyBox ซึ่งเครื่องมือขั้นสูงไม่สามารถใช้งานได้ :)
Lion

จำง่ายเช่นกัน!
fzN

ง่ายมาก ๆ catคำสั่งอยู่ในกล่องทุก ๆ ที่นั่น
Ligemer

15

เมื่อผ่านไปสองสามwวินาทีจะไม่สนใจความกว้างของหน้าจอ


คุณลองเพิ่มมากกว่าหนึ่งอัน?
Ignacio Vazquez-Abrams

ฉันพยายามเพิ่มมากกว่า 5. แต่อย่างใดมันไม่แสดงคำสั่งทั้งหมด
บูลี

1
เมื่อคุณไปถึง 3 คุณจะเห็นทุกสิ่งที่มี ไม่มีอะไรเกินกว่าสิ่งที่มันแสดงให้เห็นว่ามีโปรแกรมใด ๆ คุณมีปัญหาอื่น
Ignacio Vazquez-Abrams

11

หากคุณกำลังระบุรูปแบบออกด้วยตนเองคุณยังต้องให้แน่ใจว่าargsเป็นตัวเลือกสุดท้ายในรายการของเขตข้อมูลการส่งออกมิฉะนั้นจะถูกตัดทอน

ps -A -o args,pid,lstart จะช่วยให้

/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

แต่ps -A -o pid,lstart,argsทำให้คุณมีบรรทัดคำสั่งแบบเต็ม:

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

คุณสามารถกำหนดรูปแบบผลลัพธ์เช่นดูเฉพาะคำสั่งและรหัสกระบวนการ

ps -eo pid,args

ดู man page ของ ps สำหรับรูปแบบเอาต์พุตเพิ่มเติม หรือคุณสามารถใช้-wหรือ--width nตัวเลือก

หากทุกอย่างล้มเหลวนี่เป็นวิธีแก้ปัญหาอื่น (เพื่อดู cmds ที่ยาว)

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

1
เปลี่ยนลำดับและลองอีกครั้ง pid, args
ghostdog74

3

ขออภัยที่มาสายไปงานปาร์ตี้ แต่เพิ่งพบวิธีแก้ปัญหานี้

บรรทัดถูกตัดทอนเนื่องจาก ps ยืนยันที่จะใช้ค่า $ COLUMNS แม้ว่าเอาต์พุตไม่ใช่หน้าจอในขณะนั้น ซึ่งเป็นข้อผิดพลาด IMHO แต่ง่ายต่อการหลีกเลี่ยงเพียงทำให้ ps คิดว่าคุณมีหน้าจอที่กว้างมาก ๆ เช่นตั้งค่า COLUMNS สูงในช่วงระยะเวลาของคำสั่ง ps ตัวอย่าง:

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

ฉันหวังว่านี่จะเป็นประโยชน์กับใครบางคน แนวคิดอื่น ๆ ดูเหมือนซับซ้อนเกินไป :)


1

หากวิธีการแก้ปัญหาข้างต้นpsไม่สามารถแก้ไขปัญหาของคุณ บางทีคุณอาจจะต้องตั้งฉาบเพื่อตัดสายยาว ?

มิฉะนั้นเราต้องการข้อมูลเพิ่มเติม


โอ้ดี มีบางอย่างแปลก ๆ เกิดขึ้น
Alok Singhal

1

หากคุณgrepคำสั่งที่คุณกำลังมองหาด้วยท่อจาก ps aux มันจะตัดข้อความโดยอัตโนมัติ ฉันใช้คำตอบอื่น ๆ มากมายที่นี่ แต่บางครั้งหากคุณกำลังมองหาบางสิ่งบางอย่างมันก็ดีที่จะใช้grepและคุณรู้ว่ามันจะตัดเส้น

ps aux | grep ffmpegเช่น



0

หลักฐานการถูกตัดทอนที่คนอื่นพูดถึง (ตัวอย่างส่วนตัว)

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

นั่น ^^ จับเอาท์พุทที่ยาวในตัวแปรตรงข้ามกับ

ps -p 689 -o command

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

ตั้งแต่ที่ฉันได้ลองสิ่งนี้จากโน้ตบุ๊ก jupyter ของ Docker ฉันต้องทำงานด้วยปังแน่นอน ..

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

โน๊ตบุ๊ค jupyter ที่น่าแปลกใจช่วยให้คุณสามารถดำเนินการได้! แต่ดีใจที่ช่วยค้นหาโน้ตบุ๊กที่ละเมิดให้ใช้หน่วยความจำทั้งหมดของฉัน = D

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.