当我在我的linux服务器上运行ps -aux
命令时,我使用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
答案 0 :(得分:123)
使用auxww
标志,您将在终端窗口和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 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/
答案 1 :(得分:116)
您可能正在使用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)
行始终包含在more
和pg
。
在管道中使用ps aux
时,w
选项是不必要的,因为ps
仅在输出到终端时使用屏幕宽度。
答案 2 :(得分:93)
简单而完美:
ps -efww
不会截断行
答案 3 :(得分:49)
把它扔到cat上,自动换行
ps aux | cat
答案 4 :(得分:13)
传递几个w
将忽略显示宽度。
答案 5 :(得分:7)
您可以设置输出格式,例如,仅查看命令和进程ID。
ps -eo pid,args
请参阅ps的手册页以获取更多输出格式。或者,您可以使用-w
或--width n
选项。
如果所有其他方法都失败了,这是另一种解决方法,(只是为了查看你的长cmds)
awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],$0 }' /proc/[0-9]*/cmdline
答案 6 :(得分:3)
很抱歉迟到了,但刚刚找到解决问题的方法。
这些行被截断,因为ps坚持使用$ COLUMNS的值,即使此时输出不是屏幕。这是一个错误,恕我直言。但是容易解决,只需要做 ps认为你有一个超宽屏幕,即在ps命令的持续时间内将COLUMNS设置为高。一个例子:
$ ps -edalf # truncates lines to screen width
$ COLUMNS=1000 ps -edalf # wraps lines regardless of screen width
我希望这对某人有用。所有其他想法似乎都太复杂了:)
答案 7 :(得分:1)
如果上述解决方案均无效,ps
的输出不是您的问题。也许你需要将putty设置为wrap long lines?
否则,我们需要更多信息。
答案 8 :(得分:1)
如果您使用来自ps aux的管道grep
命令,它将自动包装文本。我在这里使用了很多其他的答案,但有时候如果你正在寻找特定的东西,那么只使用grep
并且你知道它将包裹线条是很好的。
例如ps aux | grep ffmpeg
。
答案 9 :(得分:1)
我发现这个答案就是为我准备的,因为上述答案都没有效果
https://unix.stackexchange.com/questions/91561/ps-full-command-is-too-long
基本上,内核限制了我的cmd行。
答案 10 :(得分: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
That ^^捕获变量中的长输出 与
相反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笔记本甚至可以执行!但是很高兴帮助找到有问题的笔记本占用了我所有的内存= D