El comando falla en crontab pero funciona en la terminal

El comando falla en crontab pero funciona en la terminal

He comprobadoesta preguntacon respecto a las fallas de crontab.

Estoy ejecutando este comando para capturar el htopcomando y crear una instantánea del mismo en formato html (salida htop a un archivo legible por humanos):

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

Este comando funciona correctamente en la terminal y no depende de ninguna variable de entorno. Cuando agrego este comando como cronjob, simplemente genera un archivo html vacío:

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

¿Alguna razón por la que no puede capturar la salida a través de cron?

Respuesta1

htopnecesita que la TERMvariable esté configurada, por ejemplo, xtermpara generar cualquier dato, así que simplemente configure esta variable xtermen su línea cron, por ejemplo:

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

Si desea probar si un comandoen realidadno depende de ninguna variable de entorno, lo que a menudo genera problemas cron, consulte la pregunta que vinculó, use env -ipara "comenzar con un entorno vacío":

$ env -i htop
Error opening terminal: unknown.

Combinado con diffof crony el entorno de su terminal, es una buena manera de probar qué variables necesita un comando. htopEn realidadsolonecesidades TERM:

env -i TERM=xterm htop

información relacionada