Se eu definir meu agendador de cron através de crontab -e
, o agendador funcionará corretamente. No entanto, colocar o arquivo em /etc/cron.hourly/
não funciona no meu caso.
A execução de run-parts --test /etc/cron.hourly
gera o script. Além disso, o nome do script é my_sql_backup
e não possui uma extensão de arquivo.
O script é root:root
com a permissão 777.
O programador cron.hourly
parece estar funcionando, pois essa é a saída de grep CRON /var/log/syslog
:
Mar 1 11:17:01 my-instance CRON[12919]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Além disso, se eu executasse o comando manualmente, o agendador executaria exatamente como deveria:
sudo bash -c "cd / && run-parts --report /etc/cron.hourly"
No entanto, isso parece não estar funcionando realmente. O script faz o backup do banco de dados MySQL no Google Cloud Storage, mas o armazenamento não é atualizado quando eu o verifico pelo console da Web.
Há algo que eu esteja sentindo falta aqui? Por que meu script do agendador que foi colocado em /etc/cron.hourly/
não funciona?
UPDATE
Tendo adicionado a linha echo test > /tmp/foobar.tmp
ao meu script cron, descobri que o arquivo tmp está lá. Na verdade, encontrei meu próprio arquivo tmp emitido pelo script.
O conteúdo do script é o seguinte. Então, talvez o problema tenha ocorrido na execução do comando gsutil
?
# define environment variables here
sudo sh -c "mysqldump -u$MYSQL_USER -p$MYSQL_PASS $MYSQL_DBNAME --single-transaction | gzip -9 > $MYSQL_TEMPPATH" >/dev/null 2>&1
gsutil cp $MYSQL_TEMPPATH gs://$GS_BUCKET_NAME/$MYSQL_S3_DESTPATH >/dev/null 2>&1
Mais uma vez, o script funcionou bem se eu o executasse manualmente, portanto, as variáveis de ambiente estão definidas para valores corretos ...
UPDATE 2
Eu finalmente descobri que depois de obter o arquivo de log emitido pelo comando gsutil
, ele tem o seguinte conteúdo:
AccessDeniedException: 403 Insufficient OAuth2 scope to perform this operation.
Eu ainda tenho que investigar porque o acesso é negado se for executado em /etc/cron.hourly/
... Mas o problema foi em gcloud
, não cron ... Obrigado pelo apoio nos comentários.