为什么`nohup top`会切断输出线?

dok*_*par 1 top nohup

我想用来nohup定期记录top(每 15 秒)的输出。为此,我使用 SSH 登录服务器,执行以下命令,然后再次注销:

nohup top -b -c -d15 &
Run Code Online (Sandbox Code Playgroud)

-c标志提供有关命令的附加信息,但在生成的nohup.out文件中,此信息被剪切为 82 个字符。

所以,而不是这样的输出:

10484 daemon   20   0 68924 5556 2292 S  0.0  0.0   0:00.06 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -k start
Run Code Online (Sandbox Code Playgroud)

...nohup.out它看起来像这样:

10484 daemon   20   0 68924 5556 2292 S  0.0  0.0   0:00.06 /opt/CollabNet_Subv
Run Code Online (Sandbox Code Playgroud)

如何防止nohup修剪结果top

Ste*_*itt 5

您需要top使用-w参数指定应使用的输出宽度(最多 512 列):

nohup top -b -c -d15 -w512 &
Run Code Online (Sandbox Code Playgroud)

如果你的版本top不支持-w,使用COLUMNS环境变量也可以达到同样的效果:

COLUMNS=512 nohup top -b -c -d15 &
Run Code Online (Sandbox Code Playgroud)

正如schily所解释的,由于top在这种情况下不输出到终端,它无法确定要使用的终端宽度并回退到安全默认值。