每列宽度固定的 PS 命令输出

每列宽度固定的 PS 命令输出

我想在 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 测试)上生成固定长度的字段。

相关内容