dpkg-reconfigure: não encontrado quando rodando no cron

1

Eu tenho um servidor virtual (debian) e o relógio falha ao sincronizar de tempos em tempos (provavelmente porque eu salve / restaure o estado com vboxheadlesstray).

Para corrigir este problema eu corro dpkg-reconfigure ntp && ntpq -p , ele funciona quando eu o executo como root, mas não funciona com o cron. Eu adicionei em crontab -e (como usuário root) e está usando esta linha:

1 * * * * dpkg-reconfigure ntp && ntpq -p > /dev/null 2>&1

Meu usuário comum recebe mensagens sobre ele dizendo /bin/sh: 1: dpkg-reconfigure: not found , por que meu usuário comum está recebendo o e-mail e não o root e o que preciso alterar para que ele funcione?

    
por Marwelln 23.01.2014 / 20:58

3 respostas

3

No Debian, dpkg-reconfigure está localizado em /usr/sbin , e o root obviamente tem isso em seus limites de cron $ PATH, mas $PATH to /usr/bin:/bin , mesmo para raiz.
Veja man 5 crontab:

Several  environment  variables  are  set  up automatically by the cron(8) daemon.
SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner.
PATH is set to "/usr/bin:/bin". HOME, SHELL, and PATH may be overridden by settings in the crontab;
LOGNAME is the user that the job is running from, and may not be changed.

Então você teria que modificar seu crontab:

  • dando caminho completo:
    1 * * * * /usr/sbin/dpkg-reconfigure ntp && ntpq -p > /dev/null 2>&1
  • ou com $ PATH modificado:% PATH=/usr/bin:/bin:/usr/sbin
    1 * * * * dpkg-reconfigure ntp && ntpq -p > /dev/null 2>&1

Funcionaria, mas não estaria limpo: p
É melhor seguir a recomendação acima, supondo que você tenha um daemon ntp funcional ou apenas coloque esse trabalho: 10 * * * * /usr/sbin/ntpdate &>/dev/null

    
por 23.01.2014 / 21:56
3

Melhor ainda, adicione o seguinte ao ntp.conf

tinker panic 0

Dessa forma, você não precisa reiniciar o ntp (o que não é bom).

    
por 23.01.2014 / 21:45
2

dpkg-reconfigure está localizado em /usr/sbin/ no meu sistema:

martin@martin ~ % which dpkg-reconfigure
/usr/sbin/dpkg-reconfigure

Verifique a variável PATH no seu crontab, talvez esteja faltando o diretório /usr/sbin/ ?

Além disso, usar dpkg-reconfigure apenas para forçar o NTP a reajustar o horário não parece ser uma boa ideia, e ntpq -p > /dev/null 2>&1 não parece fazer nada de útil. De acordo com a página do manual, -p apenas lista os pares, portanto, executá-lo e canalizar a saída para /dev/null não deve fazer nada.

Por que você não executa apenas /etc/init.d/ntp restart > /dev/null do seu crontab?

    
por 23.01.2014 / 21:14

Tags