dpkg-reconfigure: не найден при работе в cron

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

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

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

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

3 Solutions collect form web for “dpkg-reconfigure: не найден при работе в cron”

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

Таким образом, вам придется изменить свой 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

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

 tinker panic 0 

Таким образом, вам не нужно перезапускать ntp (что плохо).

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 , похоже, ничего полезного не делает. Согласно man-странице, -p просто перечисляет одноранговые узлы, поэтому запуск этого процесса и вывод его в /dev/null должны практически ничего не делать.

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

  • Активировать окно, которое было активным до переключения рабочей области при переключении
  • Xfce: Как указать размер строки в окне Alt + Tab?
  • Как показать количество установленных пакетов
  • Как пакет Debian должен создавать учетные записи пользователей?
  • Встречайте проблемы при попытке разместить ASP.NET Web Api на Debian с помощью Mono и Nginx
  • Он-лайн персональные страницы с терминала
  • Debian «sid» / Gnome: bash + курсор браузера blink
  • Файл Swf больше не будет воспроизводиться в Iceweasel / chromium
  • Я не могу установить новые пакеты: «Не удалось получить lock / var / lib / dpkg / lock»
  • Почему wlan0 ушел?
  • Chroot debian сжимает доступ к оболочке
  • Interesting Posts

    «Липкий» ключ выхода в tmux

    Присвоение переменных

    Я хочу напечатать строку, когда пользовательский логин

    Как добавить строку во многие файлы

    Как удалить определенный символ после определенного слова

    Как автоматически разблокировать SSH-клавиатуру при входе в систему

    Настройка доступа SCP для входа без локальной учетной записи

    Удаление файла и его символических ссылок

    Горячий, чтобы заставить diff проверить ссылку на символическую ссылку?

    Сравнение двух каталогов на разных серверах

    Соединение сокета отказано (raspbian), но порты открыты для соединений

    Как сохранить подсказку в фоновом режиме?

    Установка программного обеспечения в качестве пользователя

    Как настроить стрелку, чтобы перейти к предыдущей команде в максимумах?

    Простой способ посмотреть, кто в данный момент подключен к моей точке доступа. Linux Network-manger или nmcli

    Linux и Unix - лучшая ОС в мире.