Кілька нюансів при роботі з 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 не працюватиме якщо конфігураційний файл не закінчується символом нового рядка. Варто переконатися, що за останнім записом є порожній рядок, інакше команда не буде працювати належним чином.

Goodhoster.NET
Додати коментар