我检查过这个问题关于 crontab 失败。
我正在运行此命令来捕获htop
命令并以 html 格式创建它的快照(htop 输出到人类可读的文件):
/bin/echo q | /usr/bin/htop | /usr/bin/aha --black --line-fix > /tmp/htop.html
此命令在终端上正常运行,并且不依赖于任何环境变量。当我将此命令添加为 cronjob 时,它只会生成一个空的 html 文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- This file was created with the aha Ansi HTML Adapter. http://ziz.delphigl.com/tool_aha.php -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xml+xhtml; charset=UTF-8" />
<title>stdin</title>
</head>
<body style="color:white; background-color:black">
<pre>
</pre>
</body>
</html>
为什么无法通过捕获输出cron
?
答案1
htop
需要TERM
将变量设置为例如来输出任何数据,因此只需在 cron 行中xterm
设置此变量,例如:xterm
@hourly echo q|TERM=xterm htop|aha --black --line-fix >/tmp/htop.html
如果你想测试一个命令真的不依赖于任何环境变量 – 这通常会导致问题cron
,请参阅您链接的问题 –,使用env -i
“从空环境开始”:
$ env -i htop
Error opening terminal: unknown.
结合和diff
终端cron
环境,这是一个测试命令需要哪些变量的好方法。htop
事实上仅有的需求TERM
:
env -i TERM=xterm htop