/usr/ucb/ps 输出重定向产生截断行

/usr/ucb/ps output redirection yield truncated line

/usr/ucb/ps 屏幕上的命令输出显示一长串环境变量及其值,但将输出重定向到文件时会产生截断的行。

这个怎么解释?

bash-3.2$ /usr/ucb/ps -auxwee 6543 >/var/tmp/env-var 2>&1

bash-3.2$ cat /var/tmp/env-var
USER       PID %CPU %MEM   SZ  RSS TT       S    START  TIME COMMAND
alcrprun  6543  0.0  0.0 8752 5992 ?        S 19:35:01  0:15 /usr/bin/python -Bu ./bin/dpfoservice.py CFG_HOME=/opt/apps/algo/algoS

bash-3.2$ /usr/ucb/ps -auxwee 6543
USER       PID %CPU %MEM   SZ  RSS TT       S    START  TIME COMMAND
alcrprun  6543  0.0  0.0 8752 5992 ?        S 19:35:01  0:15 /usr/bin/python -Bu ./bin/dpfoservice.py CFG_HOME=/opt/apps/algo/algoSuite.current.solaris.alcr/cfg RISK_HOME=/opt/apps/algo/algoSuite.current.solaris.alcr/risk++ ALGO_HOME=/opt/apps/algo/algoSuite.current.solaris.alcr ARE_HOME=/opt/apps/algo/algoSuite.current.solaris.alcr/aggregation/are 
...
...

它将 132 宽的输出打印到文件中,因为这就是 -w 参数的作用。每 the ps.1b man page:

-w

Uses a wide output format (132 columns rather than 80); if repeated, that is, -ww, use arbitrarily wide output. This information is used to decide how much of long commands to print.

如果您想要任意宽度的输出,请使用 -ww 而不是 -w

仅使用 -w 选项且输出是终端 window 时,/usr/ucb/ps 似乎检测到我的 Solaris 11 副本上的终端宽度 - 更改window 修改仅使用 -w 选项发出的输出量。该行为的文档可能隐藏在 Solaris 手册页的某处,给出 Solaris 文档的历史性质。

# /usr/ucb/ps -aux | head

USER PID %CPU %MEM SZ RSS TT S START TIME COMMAND orabudge 13285 4.1 51.18413180884116344 ? O 08:56:30 0:22 oraclebudget (LOCA orabudge 11998 3.4 51.18413552884119456 ? O 08:51:53 1:49 oraclebudget (LOCA root 732 3.1 0.0 0 0 ? S Feb 04 326:27 zpool-budgetdb_dat orabudge 12030 2.8 51.18413296884116648 ? S 08:52:02 2:04 ora_p004_budget orabudge 12034 2.8 51.18413284084116504 ? S 08:52:02 2:04 ora_p006_budget orabudge 12032 2.8 51.18413290484116568 ? S 08:52:02 2:04 ora_p005_budget orabudge 12036 2.7 51.18413296884117176 ? S 08:52:02 2:02 ora_p007_budget orabudge 21339 1.0 51.18414346484127680 ? S 07:18:27 4:24 oraclebudget (LOCA orabudge 4347 0.9 51.18414084084125256 ? S 08:19:23 1:10 oraclebudget (LOCA [root@budgetdb:ravi]#

USER – 启动进程的用户。

PID – 系统分配的进程ID号。

%CPU – 进程使用的 CPU 时间的百分比。

%MEM – 正在使用的系统中总 RAM 的百分比 进程(它不会加起来达到 100%,因为一些 RAM 是共享的 通过几个过程)。

SZ – 分配给的非共享虚拟内存量(以千字节为单位) 过程。它不包括程序的文本大小 通常共享。

RSS – 进程的驻留集大小。这是基础 %MEM 是进程使用的 RAM 量。

TT – "teletype" 用户登录。

S – 进程的状态。

S – 睡觉

O – 使用 cpu(在 CPU 上)或 运行

R – 运行 并等待 CPU 空闲

Z– 终止但未死亡(僵尸)

P – 等待页面输入

D – 等待磁盘 I/ O

检查磁盘性能和内存使用情况(如果很多) P 或 D 状态出现。这可能表示两个子系统都过载。

START – 进程启动时间

TIME – 到目前为止进程使用的总时间CPU

COMMAND – 正在执行的命令