PS 명령의 전체 출력보기


163

ps -aux퍼티를 사용하여 연결된 Linux 서버에서 명령을 실행할 때 현재 창 너비에 맞지 않는 프로세스는 거의 없습니다. 대안이 있습니까?

-업데이트-

다운 그레이드에 대해 죄송합니다. 다른 사람들도 그 대답이 유용하지 않다고 생각하여 다운 그레이드했습니다.

요청한 정보는 다음과 같습니다.

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
모든 시스템 (임베디드 리눅스)에 'most', 'more'또는 'less'pager가 포함되어 있지 않기 때문에 이것은 현재 수용된 솔루션보다 더 나은 대답입니다.
frakman1

또는ps auxf > ps.log
Marslo

118

간단하고 완벽한 :

ps -efww

줄을 자르지 않습니다


2
이것은 전체 출력을 담당하는 "ww"부분입니다.
9ilsdx 9rvj 0lo

64

자동 줄 바꿈 고양이에 던져

ps aux | cat

좀 더 정교하게 만들 수 있습니다.
MZaragoza

10
고급 도구를 사용할 수없는 BusyBox와 같은 경량 Linux 배포판에 적합한 솔루션 :)
Lion

기억하기도 쉬워요!
fzN

매우 간단합니다. cat모든 nix 박스에 명령이 있습니다.
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

예를 들어 명령 및 프로세스 ID 만 표시하도록 출력 형식을 설정할 수 있습니다.

ps -eo pid,args

자세한 출력 형식은 ps 매뉴얼 페이지를 참조하십시오. -w또는 또는 --width n옵션을 사용할 수 있습니다.

다른 모든 방법이 실패하면 다른 해결 방법이 있습니다 (긴 cmd를 보려면).

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

1
순서를 변경하고 다시 시도하십시오, pid, args
ghostdog74

3

파티에 늦어서 죄송하지만 문제에 대한 해결책을 찾았습니다.

ps가 $ COLUMNS 값을 사용해야하므로 출력이 화면이 아니더라도 행이 잘립니다. 어떤 버그입니까, IMHO. 그러나 해결하기 쉬운 ps는 ps 명령이 지속되는 동안 COLUMNS를 높게 설정 한 슈퍼 와이드 화면이 있다고 생각합니다. 예를 들면 :

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

나는 이것이 여전히 누군가에게 유용하기를 바랍니다. 다른 모든 아이디어는 너무 복잡해 보였습니다. :)


1

위의 해결책 중 어느 것도 작동 ps하지 않으면 출력이 문제가되지 않습니다. 긴 줄감싸 려면 퍼티를 설정해야 합니까?

그렇지 않으면 더 많은 정보가 필요합니다.


오 잘 이상한 일이 있습니다.
Alok Singhal

1

당신이 경우 grep당신이 추신 보조에서 파이프 찾고있는 명령, 자동으로 텍스트 줄 바꿈됩니다. 나는 여기에 다른 답변을 많이 사용했지만 때로는 특정 것을 찾고 있다면 사용 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

Docker jupyter 노트북 에서이 작업을 시도했기 때문에 당연히 이것을 실행해야했습니다 ..

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

놀랍게도 jupyter 노트북을 사용하면 그렇게 할 수 있습니다! 그러나 모든 메모리를 차지하는 문제가되는 노트북을 찾는 데 도움이되어 기뻤습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.