Несколько нюансов при работе с Cron планировщиком.

Самый популярный планировщик заданий в Linux — cron. Он выполняет задания, которые прописываются в конфигурационные файлы: /etc/crontab, /etc/cron.*, /var/spool/cron

Можно удалить все записи в конфигурационном файле — нажав по ошибке не ту букву.

Дело в том, что команда crontab -e используется для редактирования конф.файла, а crontab -r — для его очистки. Таким образом, можно в любой момент получить пустой файл, так как «е» и «r» на клавиатуре размещены рядом.
Обезопасить себя можно с помощью следующего скрипта:

#!/bin/bash
while getopts ":r" opt
do
    case $opt in
        r) 
            read -r -n 1 -p "Do really want to remove current crontab? [Y/n]" confirm
            echo 
            if [ "$confirm" != "Y" ]; then
                exit 1
            fi
        ;;
        *);;
    esac
done
/usr/bin/crontab "$@"

Добавьте alias в файл .bashrc:

alias crontab='~/path/crontab_script.sh'

Теперь, когда Вы будете вводить команду «crontab -r«, увидите предупредительный вопрос:

Do really want to remove current crontab? [Y/n]

Cron не понимает системный PATH

К примеру, следующее задание не сработает, так как cron не сможет найти команду ping:

* * * * ping example.com

Нужно добавить переменную PATH в cron-файл:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Или в задании указывать полный путь к команде:

* * * * /bin/ping example.com

Планирование времени запуска

1). Первая колонка содержит значения минут (0-59)
2). Вторая колонка часы (0-23)
3). Третья колонка — дни месяца (1-31)
4). Четвертая — месяцы (1-12)
5). Пятая — дни недели (0-6)
— а символ (*) означает все возможные значение и используется как шаблон.

Следующая команда будет выполняться каждую минуту, каждый час, день и месяц:

* * * * /usr/example.sh

Выполняется каждые 30 минут (каждый час, день и месяц):

30 * * * * /usr/example.sh

Каждые 15 минут:

*/15 * * * * /usr/example.sh

Каждый день в 10:30 и 18:30

30 10,18 * * * /usr/example.sh

Команда будет выполнятся только по выходным

* * * 6,7 /usr/example.sh

Выполняться в первый день масяца в 7:30 утра

30 7 1 * * /usr/example.sh

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

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *