|
Лукаїн опублікований недавно чудовий підручник з cron та crontab яким, на мою думку, варто поділитися. Cron - це свого роду еквівалент запланованих завдань у Windows, тільки що це обробляється з терміналу. Ті, хто віддає перевагу візуальному інтерфейсу для досягнення тієї ж мети, можуть це побачити інший предмет. |
Що таке cron?
Назва cron походить від грецького chronos, що означає "час". В операційній системі Unix cron - це звичайний диспетчер фонових процесів (демон), який запускає процеси або сценарії через рівні проміжки часу (наприклад, кожну хвилину, день, тиждень або місяць). Процеси, які необхідно виконати, і час, коли вони повинні бути виконані, вказуються у файлі crontab.
Como роботи
Демон cron починається з /etc/rc.d/ o /etc/init.d залежно від розподілу. Cron працює у фоновому режимі, перевіряє таблицю завдань crontab щохвилини / etc / crontab про ан / var / spool / cron у пошуку завдань, які потрібно виконати. Як користувач ми можемо додавати команди або сценарії із завданнями до cron для автоматизації деяких процесів. Це корисно, наприклад, для автоматизації оновлення системи або хорошої системи резервного копіювання.
Що таке Кронтаб?
Crontab - це простий текстовий файл, в якому зберігається список команд, що виконуються у визначений користувачем час. Crontab перевірить дату та час, коли слід виконати сценарій або команду, дозволи на виконання, і зробить це у фоновому режимі. Кожен користувач може мати власний файл crontab, власне файл / etc / crontab вважається, що це файл crontab кореневого користувача, коли звичайні користувачі (і навіть root) хочуть створити власний файл crontab, тоді ми будемо використовувати команду crontab.
Crontab - це найпростіший спосіб управління завданнями cron у багатокористувацьких системах, як звичайний користувач системи, так і користувач root.
Використання crontab
Ми починаємо з простого прикладу.
Ми збираємося автоматизувати оновлення системи, щоб усунути докучливе «Мені завжди доводиться оновлювати, і мені це не подобається!
Перш за все ми зробимо сценарій. Цей скрипт буде викликаний cron і міститиме всі вказівки, які ми хочемо зробити, тому його потрібно протестувати в декількох випадках і кількома способами, перш ніж включати в cron, простий сценарій оновлення, такий як:
#! / bin / bash # приклад оновлення сценарію # вибрати ваш дистрибутив # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Видаліть # із вашої дистрибутивної лінії. Якщо це Ubuntu / Debian, це починається з apt-get.
Ми зберігаємо скрипт як update.sh (наприклад, каталог скриптів у вашому домі). Ми змінюємо дозволи на виконання згаданого сценарію за допомогою:
chmod a + x ~ / scripts / update.sh
Ми запускаємо сценарій пару разів, щоб перевірити, що все працює безперебійно, змінюємо те, що потрібно (він не повинен містити помилок, інакше cron буде повторювати помилку лише знову і знову). Тепер додамо завдання до нашого crontab.
Додайте завдання до crontab
Ми виконуємо видання crontab за допомогою crontab -e, в деяких дистрибутивах (таких як Ubuntu) це дає нам можливість вибрати потрібний текстовий редактор, решта нам залишається vi. Файл crontab виглядатиме приблизно так.
# mh dom mon dow користувацька команда
де:
- m відповідає хвилині виконання сценарію, значення коливається від 0 до 59
- h точний час, обробляється 24-годинний формат, значення знаходяться в діапазоні від 0 до 23, при 0 до 12:00 опівночі.
- подарунок відноситься до дня місяця, наприклад, ви можете вказати 15, якщо ви хочете запускати кожні 15 днів
- вниз означає день тижня, він може бути числовим (від 0 до 7, де 0 і 7 - неділя) або першими 3 буквами дня англійською мовою: пн, вівторок, ср, чт, пт, сб, сонце.
- користувач визначає користувача, який буде виконувати команду, це може бути root, або інший користувач, якщо він має дозвіл на виконання сценарію.
- команда відноситься до команди або абсолютного шляху виконання сценарію, приклад: /home/usuario/scripts/update.sh, якщо він викликає сценарій, він повинен бути виконуваним
Щоб зрозуміти, пояснимо кілька прикладів завдань cron:
15 10 * * * користувач /home/user/scripts/update.sh
Він запускатиме скрипт update.sh о 10:15 щодня
15 22 * * * користувач /home/user/scripts/update.sh
Він запускатиме скрипт update.sh о 10:15 щодня
00 10 * * 0 root apt-get -y update Кореневий користувач
Він буде оновлюватися щонеділі о 10:00
45 10 * * оновлення apt-get -y sun root
Користувач root запускатиме оновлення щонеділі (неділя) о 10:45 ранку
30 7 20 11 * користувач /home/usuario/scripts/update.sh
20 листопада о 7:30 користувач запустить сценарій
30 7 11 11 користувач sun /home/usuario/scripts/pastel_con_velitas.sh
11 листопада о 7:30 ранку, а це неділя, користувач святкуватиме свого сисадміна (тобто мене)
01 * * * * користувач /home/usuario/scripts/molestorecordatorio.sh
Дратівливе нагадування щохвилини щогодини щодня (НЕ рекомендується).
З ними ще можна впоратися спеціальні асортименти:
30 17 * * 1,2,3,4,5
О 5:30 вдень щодня з понеділка по п’ятницю.
00 12 1,15,28 * *
О 12 кожного першого, п’ятнадцятого та 28 числа кожного місяця (ідеально підходить для нарахування заробітної плати)
Якщо це бентежить, crontab обробляє спеціальні рядки для визначення цих діапазонів.
@reboot Запустити один раз, під час запуску
@yearly працює лише раз на рік: 0 0 1 1 *
@ щорічно так само, як @yearly
@monthly працює раз на місяць, перший день: 0 0 1 * *
@weekly Weekly перша хвилина першої години тижня. 0 0 * * 0 ″.
@ щоденно щодня, о 12:00. 0 0 * * *
@midnight те саме, що @daily
@hourly у першу хвилину кожної години: 0 * * * *
Його використання дуже просте.
@hourly user /home/user/scripts/molestorecordatorio.sh @ щомісячний користувач /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
Останнє, але не менш важливе:
Cron управління роботою
файл crontab
Замініть наявний файл crontab на визначений користувачем файл
кронтаб -e
Відредагуйте файл користувача crontab, кожен новий рядок буде новим завданням crontab.
crontab -l
Перелічіть усі завдання користувача crontab
кронтаб -д
Видаліть crontab користувача
crontab -c реж
Визначає каталог користувача crontab (він повинен мати дозволи користувача на запис та виконання)
користувач crontab -u
префікс для обробки crontab іншого користувача, приклади:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u користувач
Цей інструмент, як і багато інших, можна розглянути більш детально та детальніше в: