由 cron 运行时,top 的输出被截断为 80 列

cli*_*ime 8 cron top

我有以下日志记录脚本:

#!/bin/bash
top -b -c -n 1 >> /var/log/toplog/top.log
Run Code Online (Sandbox Code Playgroud)

以及我的 crontab 中的以下记录:

*/1 * * * *     /home/clime/scripts/toplog.sh
Run Code Online (Sandbox Code Playgroud)

问题是 top.log 中的行被削减为 80 个字符,例如:

 1512 root      20   0 80756 1436  572 S  0.0  0.1   0:05.92 /usr/libexec/postfi
Run Code Online (Sandbox Code Playgroud)

如果我直接从控制台运行命令,则不会发生这种情况。

我曾尝试使用 COLUMNS 变量:

*/1 * * * *     COLUMNS=999 /home/clime/scripts/toplog.sh
Run Code Online (Sandbox Code Playgroud)

但这导致每一行的长度恰好为 999 个字符 - 未使用的空间用空格填充,这不是我想要的。

如何解决这个奇怪的问题?我的系统是centos 6.3。

Gil*_*il' 9

top始终显示空格,直到最后一个屏幕列。您只是在打印到终端时没有意识到这一点,因为您无法在视觉上区分带有尾随空格的行和没有尾随空格的行。如果您使用鼠标或在 中复制粘贴,您会注意到这些空格screen

如果您想摆脱空格,只需将它们过滤掉即可。

COLUMNS=9999 top -b -c -n 1 | sed 's/  *$//' >>/var/log/toplog/top.log
Run Code Online (Sandbox Code Playgroud)

无论您top为了什么而跑步,都可能有更好的监控工具可用。