Os trabalhos Cron podem ser executados como root ou outro usuário especificado. Se esse usuário não tiver permissão para gravar no arquivo .sql
, a tarefa falhará.
Se o arquivo existir e tiver permissão de gravação para o usuário que está executando o trabalho, o arquivo será gravado.
se o arquivo não existir e o usuário não tiver permissão para criar arquivos no diretório de destino, a tarefa falhará.
Eu geralmente posso dizer
sudo touch /var/log/foo.log
sudo chown my_username /var/log/foo.log
agora posso dizer:
echo bar > /var/log/foo.log
mas, se o arquivo não existir, ele falhará, pois não tenho permissão para criar arquivos em /var/log/
.
Portanto, a questão se torna se o usuário que está executando o trabalho tiver o direito de criar arquivos, onde a saída de mysqldump
seja gravada.
Agora, se eu configurar um cron job para executar um script com isso:
date > /var/log/foo.log
a cada minuto, posso adicionar:
* * * * * my-user-name /path/to/script
para /etc/crontab
. Como não tenho permissão para criar arquivos em / var / log /, o daemon do cron enviará um e-mail quando a tarefa falhar.
Após 1 minuto, não há arquivo. Eu vou para um terminal e digite mail
:
$ mail
>N 1 Cron Daemon Sat Jan 31 05:15 19/731 Cron <user@host> /path/to/script
? type
...
/path/to/script: line 3: /var/log/foo.log: Permission denied
OK. Minha culpa. Eu crio o arquivo e faço isso para mim. Agora tudo está bem.
Veja também: