Назви каталогів і файлів описані для Linux (RedHat). Для інших операційних систем, назви можуть відрізнятися, але принцип роботи cron точно такий же.
Cron це програма, яка виконує завдання за розкладом. Дозволяє неодноразовий запуск завдань. Тобто завдання можна запустити в певний час або через певний проміжок часу. Формат і значення полів, для призначених для користувача файлів crontab, будуть приведені в кінці статті.
При завантаженні системи, запускається демон cron і перевіряє чергу завдань at і завдань користувачів в файлах crontab. При запуску, демон cron спочатку перевіряє каталог / var / spool / cron на наявність файлів crontab, файли crontab мають імена користувачів, відповідні іменам користувачів з / etc / passwd Кожен користувач може мати тільки один файл crontab, записів в файлі може бути декілька.
Іншими словами - файли crontab містять інструкції для демона cron, який запустить завдання (я) описане в файлі crontab. Всі файли crontab з каталогу / var / spool / cron завантажуються в пам'ять, одночасно з ними завантажуються файли з /etc/cron.d Після цього демон cron завантажує вміст файлу / etc / crontab При стандартних налаштуваннях, вміст / etc / crontab має такий вигляд :
Інформація файлу вказує, що:- вміст каталогу /etc/cron.hourly буде запускатися кожну годину на першій хвилині години.
- вміст каталогу /etc/cron.daily буде запускатися кожен день на другій хвилині четвертої години.
- вміст каталогу /etc/cron.weekly буде запускатися щонеділі на 22'ой хвилині 4'го години.
- вміст каталогу /etc/cron.monthly буде запускатися кожен перший день місяця на 42'ой хвилині 4'го години.
SHELL = / bin / bash означає використовувати для запуску команд / bin / bash. якщо змінна не вказана, то значення буде взято з / etc / passwd для користувача є власником файлу.
HOME = / кореневої каталог для користувача (параметр не обов'язковий) При необхідності доступу до спеціальних властивостями інтерпретатора, значення змінних SHELL і HOME можна змінити, не залежно від того, що прописано в / etc / passwd
MAILTO = root означає кому відсилати повідомлення про результат роботи команд.
Після того, як демон cron запущений і прочитав вміст всіх файлів crontab, він не діє, прокидаючись кожну хвилину і перевіряючи чи не потрібна запуск будь-якої команди в дану хвилину, або не з'явився новий файл crontab який необхідно обробити. Демон cron визначає зміни за часом модифікації файлів або каталогів, таке його властивість позбавляє від необхідності перезапуску демона.
Як зазначалося вище, розміщення файлів для cron в каталогах
доступно тільки користувачеві root, для використання файлів crontab користувачами, потрібно використовувати команду crontab. Команда служить для створення, зміни та додати файл для демона cron
Розглянемо приклад створення файлу crontab для користувача user, домашня директорія / home / user
Завдання: запускати кожну хвилину файл / home / user / mail, який буде відправляти пошту
1.Создать тимчасовий файл / home / user / test вміст файлу test таке:
2. Запускаємо в терміналі команду crontab / home / user / test
Усе. Після цього в каталозі / var / spool / cron буде створений файл "user" приблизно з таким вмістом
і файл / home / user / mail буде запускатися демоном cron кожну хвилину.
Доступ в каталог / var / spool / cron непрівілегірованому користувачеві закритий, що б подивитися юзером "user" чи є у нього файл crontab, досить набрати команду crontab -l. якщо файл існує-буде показано його вміст.
Для видалення файлу використовується команда crontab -r
Для редагування crontab -e
Для управління файлами crontab користувачем "root" використовується синтаксис:
-u означає чий crontab буде оброблений, Якщо опція не задана, то буде оброблений crontab того користувача, який запустив команду crontab.
Формат і значення полів
Кожна команда в призначеному для користувача файлі crontab займає один рядок і складається з шести полів. Призначені для користувача файли crontab знаходяться в каталозі / var / spool / cron
Загальний формат команди:
Кожне з полів дати і часу може бути позначено символом *, буде відповідати будь-якому можливому значенню. Для цих полів можна вказувати діапазони значень, розділених дефісом, наприклад:
рівнозначна попереднього прикладу запис (списком)
те ж саме із зазначенням діапазону
Для налагодження завдання cron, можна перенаправити результат в файл
Якщо при запуску команди / home / user / mail виникнуть помилки, то вони будуть записані в файл /tmp/tmp.cron і ви завжди зможете дізнатися причину. У разі перенаправлення виведення в файл, лист, користувачеві зазначеною в змінної MAILTO відправлений не буде.
Подивитися інформацію про всіх командах запускаються демоном cron можна в каталозі / var / log називаються cron, cron1 і т.д.
У файлі / var / log / cron записано час запуску всіх завдань cron за попередній день
В інших файлах cron1, cron2 знаходиться подібна інформація, але старіша ніж в cron
Ось практично і все, що потрібно знати для використання cron і crontab.