cron job no centOS 6.5

0

Eu usei essas duas referências para inserir uma nova entrada crontab.

redhat

ubuntu

Eu criei um novo arquivo bash e o movi para / usr / bin. Esse arquivo sh tem permissões de execução para o usuário root e o grupo admin. O arquivo bash apenas ecoa uma linha para um arquivo de log e, em seguida, chama um programa java. Eu testei o arquivo sh como root, manualmente. Corre bem. Minha entrada crontab se parece com isso ...

 @hourly      /usr/bin/foo.blah.sh

É suposto ser executado no topo de cada hora. A instrução echo não está sendo impressa no arquivo de log, então não acho que o crond esteja chamando. Além disso, quando monitoro visualmente os processos em "top", o trabalho nunca aparece. Eu executei "status de serviço crond" para verificar se o daemon do cron está em execução. A documentação diz que reiniciar o daemon não é necessário. O que mais eu poderia estar fazendo errado?

    
por bwfrieds 19.05.2016 / 22:14

2 respostas

1

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.

    
por 19.05.2016 / 23:35
0

No passado, ao adicionar scripts ao cron, eu sempre liderava a linha com sh, assim:

@hourly    sh /usr/bin/foo.blah.sh
    
por 19.05.2016 / 22:59