crontab пример запуска команд.
Допустим нам нужно сохранять backup в специальное ftp хранилище.
Месячный backup, недельный и суточный backup.
crontab -l SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin/ MAILTO='' # Загружаем backup раз в месяц в специальную директорию на ftp. 0 3 1 * * sh /root/mount # Каждую субботу кроме 1 числа месяца. 0 3 * * * 6 test `date '+%d'` -ne 1 && sh /root/saturday # Каждый день кроме 1 числа месяца и кроме субботы. 0 3 * * * 0-5 test `date '+%d'` -ne 1 && sh /root/daily
0-5 — означает что с воскресенья по пятницу запускать скрипт.
В crontab 0 и 7 это воскресенье.
Команда test, проверяет условие и возвращает значение false или true.
В данном примере проверка числа месяца, то-есть если не 1-е число то выполняем команду.
&& — Это логическое И.
В этом примере без утилиты test, сверяем если это не первое число месяца, то выполняем команду.
На FreeBSD у меня заработал этот метод.
40 2 * * 6 [ "$(/bin/date '+\%d')" -ne 1 ] && sh /root/saturday 40 2 * * 0-5 [ "$(/bin/date '+\%d')" -ne 1 ] && sh /root/daily
Можно решить задачу и так.
# По субботам, кроме 1 числа месяца. 40 2 2-31 * * test `date +\%u` -eq 6 && sh /root/saturday # Каждый день, кроме 1 числа месяца и субботы. 40 2 2-31 * * test `date +\%u` -eq 6 || sh /root/daily
2-31 — Означает с 2-го числа по 31 выполнять задачу.
Команда test, проверяет условие и возвращает значение false или true.
В данном примере && если это суббота то выполняем команду.
В примере || если это не суббота то выполняем команду.
|| — Это логическое ИЛИ.
Либо так. )
0 4 2-31/3 * * sh /root/sh/backup_fil_NO_IMAGE
В 4:00 утра, каждый 3-й день месяца, со 2го по 31е число.
Первое число исключение.
Следующий пример, выполнять каждую минуту.
* * * * * sh /root/my_sckript
Выполнять по вторникам в полночь.
0 0 * * TUE sh /root/my_sckript
Выполнять команду ка 2 час между 6 утра и 18 вечера.
* 6-18/2 * * * sh /root/my_sckript
Запускать команду каждые 3 минуты.
*/3 * * * TUE sh /root/my_sckript
А также есть переменные в crontab.
Раз в год 1 января. @yearly sh /root/my_sckript Раз в месяц. @monthly sh /root/my_sckript Команда будет выполнять каждый понедельник в полночь. @weekly Каждый день. @daily sh /root/my_sckript Каждый час. @hourly sh/root/my_sckript Выполнять каждый день в полночь. @midnight При перезагрузке сервера. @reboot sh /root/my_sckript
Легкие параметры crontab не буду объяснять.
Вот и все наиболее сложные crontab пример запуска команд.