Выполнять команду root каждые 24 часа после запуска
2471
Matthew G
Я хочу выполнять команду от имени пользователя root на машине с Ubuntu 11.04 каждые 24 часа. Эта машина работает не всегда, но когда она включена, ее можно оставить на несколько дней. Как правильно настроить мой crontab для выполнения этой команды с желаемым интервалом, и есть ли что-то особенное в выполнении задания cron от имени root, о котором я должен знать? Я единственный человек, который использует эту машину.
Обратите внимание, что ваш заголовок спрашивает, как вы можете выполнить команду 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это внимание именно с этой целью.