Выполнять команду root каждые 24 часа после запуска

2471
Matthew G

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

1
Обратите внимание, что ваш заголовок спрашивает, как вы можете выполнить команду 24 часа _after_ при каждом запуске, в то время как ваш вопрос спрашивает о том, чтобы делать это каждые 24 часа, независимо от того, когда система была запущена. Daniel Andersson 11 лет назад 1

2 ответа на вопрос

5
mvp

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

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

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

Извините, что так долго возвращался к этому. Работает отлично. Matthew G 11 лет назад 0
0
Daniel Andersson

Чтобы отредактировать 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это внимание именно с этой целью.

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