我想在 solaris 上运行命令“/usr/ucb/ps auxww”来提取 SZ 和 RSS 值。对于某些进程,这些值不显示并与 %MEM 值混合,如下所示。
USER PID %CPU %MEM SZ RSS TT S START TIME COMMAND
root 3 0.1 0.0 0 0 ? S Feb 08 3395:09 fsflush
root 6589 0.1 0.15985621000 ? S Feb 08 1309:24 ./ssmagent.bin -
root 7232 0.0 0.0 3912 3344 pts/7 O 12:55:34 0:00 /usr/ucb/ps -auxww
如果您在这里看到,对于 PID 6589 没有单独的 SZ 和 RSS 值,我不确定这些是否混合在 %MEM 中。
有什么办法可以让我指定每列的固定宽度吗?
答案1
这是 UCB ps 命令的一个怪癖,当 80 列终端足够时,从未想到大小和 RSS 列需要超过 5 个字符。
标准(POSIX)附言当 SZ 和 RSS 列包含大量数字时,输出看起来也很粗糙,但至少会在列之间保留一个空格。
使用 POSIXps
命令,您可以使用 -o 选项指定输出中显示哪些列,还可以指定列标题。
因此你可以使用:
ps -o user,pid,pcpu,pmem,osz,rss,stime,time,args
获得类似的输出,然后使用:
ps -o user,pid,pcpu,pmem,osz='---Size---' -o rss='---RSS---' -o stime,time,args
...使 SZ 和 RSS 列更宽。
但我认为 POSIXps
命令仍然会截断参数列,不同于ww
选项/usr/ucb/ps
答案2
在那些平台上可用ps -el
?它在 Mac OS X 和 Linux(Debian 测试)上生成固定长度的字段。