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