dpkg-реконфигурируйте: не найденный при выполнении в кроне

У меня есть виртуальный сервер (debian), и часам не удается синхронизировать время от времени (вероятно, потому что я сохраняю/восстанавливаю состояние с vboxheadlesstray).

Для устранения этой проблемы, я работаю dpkg-reconfigure ntp && ntpq -p, это работает, когда я выполняю его как корень, но не работает с кроном. Я включил его crontab -e (как пользователь root), и использует эту строку:

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

Мой пользователь обычного пользователя получает почту об этом высказывание /bin/sh: 1: dpkg-reconfigure: not found, почему мой обычный пользователь получает почту и не корень и что я должен изменить, чтобы заставить его работать?

1
23.01.2014, 21:58
3 ответа

В Debian, dpkg-reconfigure расположен под /usr/sbin, и корень, очевидно, имеет его в его $PATH, но пределах крона $PATH кому: /usr/bin:/bin, даже для корня.
Посмотрите человека 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.

Таким образом, необходимо было бы изменить crontab:

  • предоставление полного пути:
    1 * * * * /usr/sbin/dpkg-reconfigure ntp && ntpq -p > /dev/null 2>&1
  • или с измененным $PATH:
    PATH=/usr/bin:/bin:/usr/sbin
    1 * * * * dpkg-reconfigure ntp && ntpq -p > /dev/null 2>&1

Это работало бы, но это не будет чисто :p
Необходимо следовать выше рекомендации, предполагая, что Вы имеете рабочего демона NTP или просто помещаете то задание вместо этого:
10 * * * * /usr/sbin/ntpdate &>/dev/null

3
27.01.2020, 23:12

Еще лучше добавьте следующее к ntp.conf

tinker panic 0

Тем путем Вы не должны перезапускать ntp (который не хорош).

3
27.01.2020, 23:12
  • 1
    Не работал. Часы сервера все еще не синхронизируются с этим. –  Marwelln 27.01.2014, 12:03
  • 2
    Что делает ntpq -p сказать? –  dfc 27.01.2014, 20:16

dpkg-reconfigure расположен в /usr/sbin/ в моей системе:

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

Проверьте PATH переменная в Вашем crontab, возможно, это отсутствует /usr/sbin/ каталог?

Кроме того, использование dpkg-reconfigure только вынудить NTP сбросить время не походит на особенно хорошую идею, и ntpq -p > /dev/null 2>&1 кажется, не делает ничего полезного. Согласно странице справочника, -p просто перечисляет коллег, столь рабочих что и передача по каналу вывода к /dev/null по существу ничего не должен делать.

Почему Вы просто не работаете /etc/init.d/ntp restart > /dev/null от Вашего crontab?

2
27.01.2020, 23:12

Теги

Похожие вопросы