tente usar um caminho absoluto para test.txt
, é improvável que o crontab esteja usando o mesmo diretório local que você quando executa o script e esse arquivo pode não existir.
Eu escrevi um script de shell com o seguinte conteúdo:
#!/bin/bash
value='cat test.txt'
echo "Output: $value" >> currentOutput.txt
Ao executar este script no shell, ele grava corretamente o valor dentro do currentOutput.txt. Ao executar este script em / etc / crontab, o arquivo só é preenchido com "Saída:".
O usuário em execução no shell e crontab é root. Também o proprietário de "currentOutput.txt", "test.txt" e o script é root. Eu estou apenas pensando sobre a saída diferente entre a execução normal e a execução pelo crontab.
Esta é a minha entrada no crontab:
*/5 * * * * root /bin/sh /var/www/testscript.sh
Alguma sugestão?
O diretório de trabalho provavelmente não é o diretório em que seu arquivo está armazenado (por exemplo, /var/www
). Tente especificar o caminho completo para test.txt
.
Você deve sempre ser o mais específico possível em tarefas agendadas, já que o ambiente inteiro é bem diferente do seu ambiente normal de shell.