1

Я хочу выполнять команду от имени пользователя root на машине с Ubuntu 11.04 каждые 24 часа. Эта машина работает не всегда, но когда она включена, ее можно оставить на несколько дней. Как правильно настроить мой crontab для выполнения этой команды с желаемым интервалом, и есть ли что-то особенное в выполнении задания cron от имени root, о котором я должен знать? Я единственный человек, который использует эту машину.

2 ответа2

5

Вы можете просто добавить свой скрипт для выполнения в каталог /etc/cron.daily - он будет выполняться один раз в день anacron.

Выдержка из man 8 anacron:

Anacron может использоваться для периодического выполнения команд с частотой, указанной в днях. В отличие от cron(8), он не предполагает, что машина работает непрерывно. Следовательно, его можно использовать на машинах, которые не работают 24 часа в сутки, для контроля ежедневных, еженедельных и ежемесячных заданий, которые обычно контролируются cron.

0

Чтобы отредактировать crontab root, запустите:

sudo crontab -e

Заполните строку, например:

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

Это будет выполнять указанную команду ntpdate с ключом -s один раз в полночь (см. info 'crontab(5)' для документации о формате или, возможно, только закомментированные первые строки самого crontab).

Несколько небольших указателей:

  • Обратите внимание, что команды в crontab обычно выполняются через /bin/sh , который в системе на основе Debian не Bash, а Dash. Будьте осторожны, чтобы не использовать Bashisms в командах. По моему опыту, нередко можно видеть неправильные перенаправления и неверные предположения о том, какие символы нужно экранировать.
  • Часто рекомендуется указывать полные пути к двоичным файлам, поскольку переменная PATH может отличаться для пользователя root и обычного пользователя. Я видел ситуации, когда одна команда скрывала другую из-за различных PATH , что является ненужным осложнением.

    Это может также рассматриваться как некоторая угроза безопасности для простого запуска программы, которая является первой в поиске пути, так как небрежная конфигурация может открыть это для кого-то, чтобы заменить двоичный файл (если у кого-то есть такие права в системе, один возможно, может сделать это в любом случае в какой-то степени, но тем не менее).

Cron будет выполнять команду каждые 24 часа, пока машина работает в данный момент. Если вы хотите, чтобы машина "догоняла", если она была выключена при запланированном выполнении, вы должны посмотреть на anacron который имеет именно эту цель.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .