Xem toàn bộ đầu ra của lệnh PS


163

Khi tôi chạy ps -auxlệnh trên máy chủ linux của mình, mà tôi đã kết nối bằng putty, một vài tiến trình quá dài để phù hợp với chiều rộng cửa sổ hiện tại của tôi. Có một sự thay thế?

- Cập nhật -

Tôi xin lỗi vì đã hạ cấp, tôi nghĩ người khác sẽ không tìm thấy câu trả lời hữu ích, vì vậy tôi đã hạ cấp.

Đây là thông tin bạn yêu cầu.

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

Bên cạnh đó, bạn đã cung cấp rất ít thông tin, vì vậy bạn không nên bỏ qua tất cả các câu trả lời bạn đã nhận được cho đến nay. Chúng tôi đang cố gắng giúp bạn. Bạn nên đăng sản lượng echo $TERM, stty -aecho $COLUMNStrong câu hỏi của bạn.
Alok Singhal

Hãy thử stty ocrnlvà / hoặc stty sane?
Alok Singhal

29
ps axuwwĐó là câu trả lời;) Ít nhất là đối với tôi. Nhân đôi wwđã làm điều đó.
brutuscat

Câu trả lời:


145

Có thể bạn đang sử dụng một máy nhắn tin như lesshoặc mostvì đầu ra ps auxdài hơn một màn hình. Nếu vậy, các tùy chọn sau sẽ khiến (hoặc buộc) các đường dài được bọc thay vì bị cắt ngắn.

ps aux | less -+S

ps aux | most -w

Nếu bạn sử dụng một trong các lệnh sau, các dòng sẽ không được bọc nhưng bạn có thể sử dụng các phím mũi tên hoặc các phím di chuyển khác để cuộn sang trái và phải.

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)

Các dòng luôn được bọc cho morepg.

Khi ps auxđược sử dụng trong đường ống, wtùy chọn là không cần thiết vì pschỉ sử dụng chiều rộng màn hình khi đầu ra là tới thiết bị đầu cuối.


21
Xin lưu ý rằng trong Linux vẫn có giới hạn 4096 ký tự được mã hóa cứng trong mã hạt nhân: xem stackoverflow.com/questions/199130/
Kẻ

3
@MarianoPaniga: Bạn đã cứu mạng tôi với bình luận đó.
xếp chồng

phần lớn? bạn có ý nghĩa hơn?
Mike Furlender 27/12/18

@MikeFurlender: Không, mostlà một máy nhắn tin khác. Tôi đã thêm một liên kết trong câu trả lời của tôi.
Tạm dừng cho đến khi có thông báo mới.

@DennisWilliamson Tuyên bố của bạn về việc wkhông cần thiết khi sử dụng đường ống dường như phụ thuộc vào hệ thống. Trên cả openSUSE Leap 15.0 và Ubuntu 18.04, các lệnh như ps aux | grep <something>hành động trên đầu ra psbị cắt bớt bởi chiều rộng của thiết bị đầu cuối.
bán hàng

149

Sử dụng các auxwwcờ, bạn sẽ thấy đường dẫn đầy đủ đến đầu ra trong cả cửa sổ đầu cuối và từ các tập lệnh 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 auxliệt kê tất cả các quy trình được thực hiện bởi tất cả người dùng. Xem man psđể biết chi tiết. Các wwlá cờ đặt chiều rộng không giới hạn.

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

Tôi đã tìm thấy câu trả lời trên blog sau:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/


10
Đây là một câu trả lời tốt hơn so với giải pháp được chấp nhận hiện tại vì không phải tất cả các hệ thống (linux được nhúng) đều bao gồm các máy nhắn tin 'nhất', 'nhiều hơn' hoặc 'ít' hơn.
frakman1

hoặc,ps auxf > ps.log
Marslo

118

đơn giản và hoàn hảo:

ps -efww

sẽ không cắt ngắn dòng


2
Đây là phần "ww" chịu trách nhiệm cho toàn bộ đầu ra "
9ilsdx 9rvj 0lo

64

Chỉ cần ném nó vào con mèo, dòng kết thúc tự động

ps aux | cat

bạn có thể xây dựng, một nhưng nhiều hơn nữa.
MZaragoza

10
Giải pháp tốt cho các bản phân phối linux nhẹ như BusyBox, nơi các công cụ nâng cao không có sẵn :)
Lion

dễ nhớ là tốt!
fzN

Rất rất đơn giản. catlệnh là trên mỗi hộp nix ngoài kia.
Ligemer

15

Vượt qua nó một vài wgiây sẽ bỏ qua chiều rộng màn hình.


Bạn đã thử thêm nhiều hơn một?
Ignacio Vazquez-Abrams

Tôi đã thử thêm nhiều hơn 5. Nhưng bằng cách nào đó nó không hiển thị lệnh hoàn chỉnh.
Boolean

1
Khi bạn nhận được đến 3, bạn sẽ thấy tất cả những gì có. Không có gì ngoài những gì nó cho thấy có thể nhìn thấy cho bất kỳ chương trình. Bạn có một vấn đề khác.
Ignacio Vazquez-Abrams

11

Nếu bạn chỉ định định dạng đầu ra theo cách thủ công, bạn cũng cần đảm bảo argstùy chọn này nằm cuối cùng trong danh sách các trường đầu ra, nếu không nó sẽ bị cắt ngắn.

ps -A -o args,pid,lstart cho

/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

nhưng ps -A -o pid,lstart,argsgiúp bạn có dòng lệnh đầy đủ:

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

bạn có thể đặt định dạng đầu ra, ví dụ để chỉ xem lệnh và id quá trình.

ps -eo pid,args

xem trang man của ps để biết thêm định dạng đầu ra. Ngoài ra, bạn có thể sử dụng -whoặc--width n tùy chọn.

Nếu vẫn thất bại, đây là một cách giải quyết khác, (chỉ để xem các cm dài của bạn)

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

1
thay đổi thứ tự và thử lại, pid, args
ghostdog74

3

Xin lỗi vì đến bữa tiệc muộn nhưng chỉ tìm thấy giải pháp này cho vấn đề.

Các dòng bị cắt bớt vì ps khăng khăng sử dụng giá trị của $ COLUMNS, ngay cả khi đầu ra không phải là màn hình tại thời điểm đó. Đó là một lỗi, IMHO. Nhưng dễ dàng để làm việc xung quanh, chỉ cần làm cho ps nghĩ rằng bạn có một màn hình siêu rộng, tức là đặt COLUMNS ở mức cao trong suốt thời gian của lệnh ps. Một ví dụ:

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

Tôi hy vọng điều này vẫn hữu ích cho ai đó. Tất cả các ý tưởng khác có vẻ quá phức tạp :)


1

Nếu không có giải pháp nào ở trên hoạt động, đầu ra pskhông phải là vấn đề của bạn. Có lẽ bạn cần phải đặt putty để bọc đường dài ?

Nếu không, chúng tôi cần thêm thông tin.


Ồ tốt Có một cái gì đó kỳ lạ đang xảy ra.
Alok Singhal

1

Nếu bạn greplà lệnh mà bạn đang tìm kiếm với một đường ống từ ps aux, nó sẽ tự động ngắt văn bản. Tôi đã sử dụng rất nhiều câu trả lời khác ở đây, nhưng đôi khi nếu bạn đang tìm kiếm một cái gì đó cụ thể, thật tuyệt khi chỉ sử dụng grepvà bạn biết rằng nó sẽ gói gọn.

Chẳng hạn ps aux | grep ffmpeg.



0

Bằng chứng cho việc cắt ngắn được đề cập bởi những người khác, (một ví dụ cá nhân)

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

Điều đó ^^ ghi lại đầu ra dài trong một biến Trái ngược với

ps -p 689 -o command

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

Vì tôi đã thử cái này từ một máy tính xách tay jupyter Docker, nên tôi cần phải chạy cái này với tiếng nổ tất nhiên ..

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

Đáng ngạc nhiên máy tính xách tay jupyter cho phép bạn thực hiện ngay cả điều đó! Nhưng rất vui khi giúp tìm thấy cuốn sổ ghi chép vi phạm chiếm hết bộ nhớ của tôi = D

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.