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

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

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

nohup top -b -c -d15 &

-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

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

10484 daemon   20   0 68924 5556 2292 S  0.0  0.0   0:00.06 /opt/CollabNet_Subv

如何防止nohup修剪结果top

答案1

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

nohup top -b -c -d15 -w512 &

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

COLUMNS=512 nohup top -b -c -d15 &

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

答案2

除非有一种明确的方法来告诉您的特定top版本应该使用哪个输出,否则您不能这样做。我所知道的实现top不允许指定输出宽度。

这是因为nohup导致程序使用纯文件而不是终端top运行。stdout

因此,top无法检索 tty 宽度并回退到标准 80 列。

相关内容