查看PS命令的完整输出

当我在我的Linux服务器上运行ps -aux命令时,我使用putty连接了这个命令,很less进程太长,无法放入当前窗口宽度。 有其他select吗?

– 更新 –

我很抱歉降级,我以为别人也不会find有用的答案,所以我降级了。

这是您要求的信息。

 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 

很可能是因为ps aux的输出比屏幕更长,所以使用的是lessmost的寻呼机。 如果是这样,以下选项将导致(或强制)长行换行而不是被截断。

 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

当在pipe道中使用ps auxw选项是不必要的,因为当输出到terminal时ps只使用屏幕宽度。

使用auxww标志,您将在terminal窗口和shell脚本中看到完整的path输出。

 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 psww标志设置无限宽度。

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

我在下面的博客上find了答案:
http://www.snowfrog.n​​et/2010/06/10/solaris-ps-output-truncated-at-80-columns/

简单而完美:

 ps -efww 

不会截断线

只要把它扔在猫,自动换行

 ps aux | cat 

通过几秒将忽略显示宽度。

你可以设置输出格式,例如只看命令和进程ID。

 ps -eo pid,args 

看到更多的输出格式ps的手册页。 或者,您可以使用-w--width n选项。

如果一切都失败了,这是另一个解决方法,(只是看你的长码)

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

对不起,迟到了,但只是发现这个问题的解决scheme。

由于ps坚持使用$ COLUMNS的值,行被截断,即使输出不是当时的屏幕。 这是一个错误,恕我直言。 但容易解决,只是让ps认为你有一个超宽的屏幕,即在ps命令的持续时间设置COLUMNS高。 一个例子:

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

我希望这对某个人仍然有用。 所有其他的想法似乎太复杂:)

如果您手动指定输出格式,则还需要确保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] 

如果以上解决scheme都不工作, ps的输出不是你的问题。 也许你需要设置腻子来包装长线 ?

否则,我们需要更多的信息。

如果你使用ps aux的pipe道grep你正在查找的命令,它会自动换行。 我在这里使用了很多其他的答案,但是有时候如果你正在寻找一些特定的东西,那么使用grep并且知道它会包装行是很好的。

比如ps aux | grep ffmpeg ps aux | grep ffmpeg

我发现这个答案是这样的,因为没有任何上述的答案工作

https://unix.stackexchange.com/questions/91561/ps-full-command-is-too-long

基本上,内核正在限制我的命令行。