O comando falha no crontab mas funciona no terminal

0

Eu verifiquei esta questão com relação às falhas do crontab.

Estou executando este comando para capturar o comando htop e criar um instantâneo dele em formato html ( saída htop para legível por humanos arquivo ):

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

Este comando funciona corretamente no terminal e não depende de nenhuma variável de ambiente. Quando eu adiciono este comando como um cronjob, ele apenas gera um arquivo html vazio:

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

Qualquer motivo pelo qual não é possível capturar a saída via cron ?

    
por ChillarAnand 08.06.2018 / 07:41

1 resposta

2

htop precisa da variável TERM definida como, por exemplo xterm para produzir quaisquer dados, portanto, basta definir essa variável para xterm em sua linha do cron, por exemplo:

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

Se você quiser testar se um comando realmente não depende de variáveis de ambiente - o que geralmente causa problemas com cron , consulte a pergunta que você vinculou -, use env -i para "Comece com um ambiente vazio":

$ env -i htop
Error opening terminal: unknown.

Combinado com o diff de cron e o ambiente do seu terminal, que é uma boa maneira de testar quais variáveis um comando precisa. htop de fato somente precisa de TERM :

env -i TERM=xterm htop
    
por dessert 08.06.2018 / 10:56