命令在 crontab 中失敗但在終端機中有效

命令在 crontab 中失敗但在終端機中有效

我檢查過這個問題關於 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將變數設為 例如xterm才能輸出任何數據,因此只需xterm在 cron 行中設定此變數即可,例如:

@hourly echo q|TERM=xterm htop|aha --black --line-fix >/tmp/htop.html

如果你想測試一個命令是否真的不依賴任何環境變數 - 這通常會導致問題cron,請參閱您連結的問題 - 使用env -i「從空環境開始」:

$ env -i htop
Error opening terminal: unknown.

diffofcron和終端環境結合,這是測試命令需要哪些變數的好方法。htop實際上僅有的需求TERM

env -i TERM=xterm htop

相關內容