Você não diz realmente onde está a entrada do crontab, mas baseado no seu comentário de que crontab -l
outputs no crontab for root
, eu arriscaria um palpite de que você adicionou um arquivo em um dos /etc/cron.* diretórios, que contém arquivos correspondentes a várias tarefas agendadas. Esta resposta assume que esse é o caso.
Esses arquivos têm um formato um pouco diferente do crontab específico do usuário que você edita por meio de crontab -e
. Especificamente, eles incluem um campo de nome de usuário pouco antes do comando, que não está incluído no crontab específico do usuário (que pelo menos no meu sistema é armazenado em / var / spool / cron / crontabs, mas por favor não abuse dessas informações, a localização exata é um detalhe de implementação do daemon do cron que você está executando, e você deve usar as interfaces documentadas para gerenciar esses arquivos).
Como resultado, você deve alterar
@hourly /usr/bin/foo.blah.sh
para
@hourly user /usr/bin/foo.blah.sh
em que user
é o nome da conta do usuário para executar o script como. Em seguida, ele deve ser executado corretamente.
Eu realmente incentivo você a não executar trabalhos agendados como root
, a menos que você precise; fazer qualquer coisa, pois o superusuário é sempre um risco de segurança. Se possível, forneça ao script sua própria conta com acesso restrito. (Este é o princípio do menor privilégio; pelo menos, isto é, que é necessário para que ele faça seu trabalho.) Como regra geral, você deve colocar arquivos locais do sistema em / usr / local para evitar conflitos com o gerenciador de pacotes do sistema; além disso, para evitar confusão, não coloque coisas em nenhum diretório bin que precise de privilégios de root para funcionar, use sbin.