a saída do comando para arquivo no crontab não funciona

a saída do comando para arquivo no crontab não funciona

Estou com um problema para mostrar a saída de um comando no cli e redirecioná-lo também para um arquivo no meu Raspberry Pi 4 com Raspbian Buster.

Eu começo sudo crontab -e.

Estas são minhas declarações básicas:

0 */5 * * * sudo /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && sudo ufw status verbose > /var/log/ufw-status.log

A primeira parte funciona, mas a segunda não devido a um erro de permissão ao gravar em ufw-status.log. Mensagem de erro:-bash: /var/log/blockips.log: Keine Berechtigung

Então li vários tópicos e tentei isso:

0 */5 * * * sudo /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && sudo ufw status verbose | sudo tee /var/log/ufw-status.log

Isso não está funcionando. O arquivo ainda não foi alterado após vários dias. Mas se eu tentar apenas sudo ufw status verbose | sudo tee /var/log/ufw-status.logna linha de comando (não no crontab), funciona.

O erro está no crontab ou o erro depende da primeira instrução?

Pode me ajudar?

Obrigado.

Responder1

Você usou sudo crontab -e, que edita o crontab raiz. Como resultado você não precisa - e não deve usar - sudodentro do crontabpróprio arquivo porque os comandos já estão sendo executados como root.

Seu comando crontab pode, portanto, ser simplificado para isto

0 */5 * * * /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && ufw status verbose > /var/log/ufw-status.log

Não é uma boa prática executar scripts de usuário (ou seja, aqueles no diretório inicial de um usuário) como root, mas se você for o único usuário na máquina, isso é aceitável. (A razão é que seu usuário comum pode alterar o script para fazer qualquer coisa, e o root irá executá-lo gentilmente para eles.)

Se você estiver recebendo erros, o primeiro lugar a procurar é no e-mail local, para onde cronenvia seus erros. Você pode usar o comando mailou mailx(como root, já que é de um crontab root), outraire apenas less /var/mail/rootpara ver o arquivo de correio bruto.

informação relacionada