我想用来定期记录(每 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 列。