使用 top 命令的 cron 脚本和 TERM 定义的问题

Lit*_*ito 12 top term cron xterm

我在执行 cron 进程以检查服务器中当前的 CPU 使用情况时遇到问题。

我的脚本开始于:

top -c -n 1 -u www-data > /tmp/kill-cpu
Run Code Online (Sandbox Code Playgroud)

我可以在控制台中毫无问题地执行,但在 cron 中我得到

顶部:tty 获取失败

如果我使用 -b 选项到顶部

top -b -n 1
Run Code Online (Sandbox Code Playgroud)

我得到

'dumb':未知终端类型。

我使用 xterm 作为 TERM

感谢您的帮助 :)
Lito。

解决方案:我能够通过以下方式解决问题:

ln -s /lib/terminfo/d/dumb /usr/share/terminfo/d/dumb
Run Code Online (Sandbox Code Playgroud)

cjc*_*cjc 9

您可以尝试以下操作:

TERM=vt100 top -b -n 1
Run Code Online (Sandbox Code Playgroud)

这将设置 TERM 变量以使用“top”命令执行。

但是您的根本问题是您的 termcap 数据库不完整或损坏。我没有要查看的 Debian 机器,但在 Ubuntu 机器上,“哑” termcap 信息位于文件 /usr/share/terminfo/d/dumb 中。该文件是 Ubuntu 8.04 和 10.04 上的 ncurses-base 包的一部分。在 RHEL 上,它是 ncurses 包的一部分。也许您的安装只是缺少这个文件?