Executa um comando root a cada 24 horas após a inicialização

1

Eu quero executar um comando como root em uma máquina Ubuntu 11.04 a cada 24 horas. Esta máquina não está ligada o tempo todo, mas quando está, pode ser deixada ligada durante dias. Como devo configurar corretamente meu crontab para executar este comando no intervalo desejado, e há algo especial sobre a execução de um cron job como root que eu deveria saber? Eu sou a única pessoa que usa essa máquina.

    
por Matthew G 12.02.2013 / 12:28

2 respostas

5

Você pode simplesmente adicionar seu script para ser executado no diretório /etc/cron.daily - ele será executado uma vez por dia por anacron .

Trecho de man 8 anacron :

Anacron can be used to execute commands periodically, with a frequency specified in days. Unlike cron(8), it does not assume that the machine is running continuously. Hence, it can be used on machines that aren't running 24 hours a day, to control daily, weekly, and monthly jobs that are usually controlled by cron.

    
por 12.02.2013 / 12:39
0

Para editar o crontab do root, execute:

sudo crontab -e

Preencha uma linha com, por exemplo:

0 0 * * * /usr/sbin/ntpdate-debian -s

Isso executará o comando especificado ntpdate com a opção -s uma vez a cada meia-noite (veja info 'crontab(5)' para uma documentação do formato, ou provavelmente apenas as primeiras linhas comentadas do próprio crontab).

Alguns pequenos indicadores:

  • Note que os comandos no crontab normalmente são executados via /bin/sh , que no sistema baseado no Debian não é o Bash, mas o Dash. Tenha cuidado para não usar Bashisms nos comandos. Na minha experiência, não é incomum ver redirecionamentos incorretos e suposições incorretas sobre quais caracteres precisam ser escapados.
  • Geralmente, é uma boa ideia fornecer caminhos completos para os binários, pois a variável PATH pode ser diferente entre o usuário root e o usuário comum. Eu vi situações em que um comando obscureceu outro devido a variáveis PATH diferentes, o que é uma complicação desnecessária.

    Ele também pode ser visto como um risco de segurança para simplesmente executar o programa que é o primeiro na pesquisa de caminho, já que a configuração malfeita pode abrir esse processo para alguém substituir um binário (se tiver esse tipo de direitos sistema, provavelmente é possível fazê-lo de qualquer maneira, mas mesmo assim.

O Cron executará o comando a cada 24 horas, desde que a máquina esteja funcionando no momento. Se você quiser fazer a máquina "recuperar o atraso" se ela foi desativada em uma execução planejada, consulte anacron tem esse propósito exato.

    
por 12.02.2013 / 12:42