Der Befehl schlägt in Crontab fehl, funktioniert aber im Terminal

Der Befehl schlägt in Crontab fehl, funktioniert aber im Terminal

ich habe kontrolliertdiese Fragebezüglich Crontab-Fehlern.

Ich führe diesen Befehl aus, um den htopBefehl zu erfassen und einen Snapshot davon im HTML-Format zu erstellen (htop-Ausgabe in eine menschenlesbare Datei):

/bin/echo q | /usr/bin/htop | /usr/bin/aha --black --line-fix > /tmp/htop.html

Dieser Befehl funktioniert auf dem Terminal einwandfrei und ist nicht von Umgebungsvariablen abhängig. Wenn ich diesen Befehl als Cronjob hinzufüge, wird einfach eine leere HTML-Datei generiert:

<?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>

Gibt es einen Grund, warum die Ausgabe nicht über erfasst werden kann cron?

Antwort1

htopmuss die TERMVariable zB gesetzt sein, xtermum Daten auszugeben, also setzen Sie diese Variable einfach xtermin Ihrer Cron-Zeile, zB:

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

Wenn Sie testen möchten, ob ein BefehlWirklichhängt nicht von Umgebungsvariablen ab – was oft zu Problemen führt cron, siehe die Frage, die Sie verlinkt haben –, verwenden Sie, env -ium „mit einer leeren Umgebung zu beginnen“:

$ env -i htop
Error opening terminal: unknown.

In Kombination mit den diffof -Befehlen cronund der Umgebung Ihres Terminals ist dies eine gute Möglichkeit, zu testen, welche Variablen ein Befehl benötigt htop.nurBedürfnisse TERM:

env -i TERM=xterm htop

verwandte Informationen