1. Навіщо потрібна автоматизація?
Автоматизація задач — це основа основ для будь-якого системного адміністратора, особливо в Linux. Уявіть роботу без автоматизації: щоранку ви заходите в термінал і вводите одну й ту саму команду, щоб зробити копії ваших даних, архівувати їх, відправити на сервер і почистити старі логи. Через тиждень така рутина змусить вас замислитися про зміну професії… Але ні, ми тут для того, щоб навчити вас, як зробити машину своїм вірним слугою.
Сьогоднішня лекція — це магія часу і задач. Ми навчимося автоматизувати процеси на рівні операційної системи за допомогою неймовірних інструментів cron та at. Ці утиліти рятують величезну кількість часу, а іноді й нервів.
Автоматизація — це рятувальне коло для будь-якої рутинної задачі. Наприклад, у вас є скрипт, який генерує звіт для вашого начальника. Цей звіт потрібен щоранку о 8:00. Замість того, щоб вставати раніше, щоби вручну запускати скрипт (і ризикувати застрягти з чашкою кави та забути запустити), ви можете налаштувати cron для виконання цієї задачі автоматично.
cron — це інструмент для регулярних задач, які повторюються в установлений час.
at — це утиліта для одноразових задач, які мають виконатися в конкретний момент часу.
2. Робота з cron
Що таке cron?
cron — це демон (системний процес), який працює у фоновому режимі й виконує задачі, запрограмовані на певний час. Розклади для цих задач зберігаються у так званих crontab — це текстові файли. Кожен користувач у системі може мати власний crontab.
Ваше перше завдання у cron
Ось як виглядає базова команда для роботи з cron:
crontab -e
Ця команда відкриває crontab поточного користувача для редагування. Ви можете додати задачі, вказавши формат розкладу.
Синтаксис розкладу
Рядок у crontab складається із шести полів:
* * * * * COMMAND
- - - - -
| | | | └─ День тижня (0–7, де 0 та 7 — неділя)
| | | └── Місяць (1–12)
| | └─── День місяця (1–31)
| └──── Години (0–23)
└───── Хвилини (0–59)
Приклад: виконайте echo "Hello, Linux" щодня опівдні:
0 12 * * * echo "Hello, Linux"
Практика: запустимо просту задачу
Відкрийте ваш
crontabдля редагування:crontab -eДодайте рядок:
*/5 * * * * echo "Hello, world! The time is $(date)" >> ~/cron_test.logЦе завдання буде додавати рядок із поточним часом у файл
cron_test.logкожні 5 хвилин. Збережіть файл і вийдіть.Перевірте, чи запустилася задача:
tail -f ~/cron_test.logЧерез 5 хвилин ви маєте побачити оновлений запис у файлі.
Перегляд запланованих задач
Щоб перевірити поточні задачі:
crontab -l
Видалення задач
Щоб видалити всі задачі з crontab:
crontab -r
Реальні приклади використання cron
Архівування файлів
Наприклад, ви хочете архівувати файли з каталогу /var/logs щоночі о 3 годині:
Напишіть скрипт:
#!/bin/bash tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logsЗадайте розклад у
crontab:0 3 * * * /path/to/script.sh
І все! Ви більше ніколи не забудете зробити резервну копію.
Повідомлення про завантаження системи
Наприклад, ви хочете отримувати повідомлення, якщо навантаження на процесор більше 80%:
Напишіть скрипт:
#!/bin/bash LOAD=$(uptime | awk '{print $10}' | sed 's/,//') if (( $(echo "$LOAD > 0.80" | bc -l) )); then echo "High CPU load: $LOAD" | mail -s "CPU Alert" you@example.com fiВстановіть розклад:
*/10 * * * * /path/to/cpu_check.sh
3. Робота з at
at дозволяє виконати одноразове завдання у конкретний час. На відміну від cron, завдання at не повторюються. Це зручно для завдань типу "зробити це завтра о 9 ранку".
Просте завдання з at
Ось приклад, як запланувати завдання:
echo "echo 'Привіт, Linux!'" | at now + 1 minute
Ця команда запустить команду echo 'Привіт, Linux!' через одну хвилину.
Ви можете вказати точний час і дату:
echo "echo 'Резервне копіювання завершено!'" | at 10:30 AM tomorrow
Керування завданнями at
Після додавання завдання ви можете переглянути їх список:
atq
Приклад виводу:
1 Tue Oct 31 10:30:00 2023 a user
2 Tue Oct 31 11:00:00 2023 a user
Щоб видалити завдання:
atrm <job_id>
Практика: використання at для сповіщень
Створіть завдання для сповіщення через 2 хвилини:
echo "notify-send 'Час вийшов!'" | at now + 2 minutesПеревірте список завдань:
atqОчікуйте появу спливаючого вікна через 2 хвилини.
4. Типові помилки при роботі з cron і at
Однією з найчастіших проблем є вказівка невірного шляху до скрипту або команди. Пам’ятайте, що cron виконується в мінімальному середовищі, тому може не знати про ваші змінні, такі як PATH. Найкращий спосіб — використовувати абсолютні шляхи.
Наприклад, якщо ви хочете запустити Python-скрипт:
*/30 * * * * /usr/bin/python3 /path/to/script.py
Також переконайтеся, що скрипт має права на виконання:
chmod +x /path/to/script.sh
Де це стане в нагоді?
Навички автоматизації потрібні майже в кожній професії, пов’язаній з IT. Ви можете використовувати ці знання:
- Для автоматизації рутинних системних задач.
- Для налаштування періодичного резервного копіювання.
- Для моніторингу стану серверів.
- На співбесідах, де часто запитують про
cronі автоматизацію.
Якщо ви працюєте в DevOps, адмініструванні систем чи просто хочете стати продуктивнішим, розуміння cron і at допоможе вам виділитися та заощадити купу часу.
Тепер ви знаєте, як змусити Linux працювати за вас. Наступного разу, коли хтось скаржитиметься на рутину, просто посміхніться, бо ви — майстер автоматизації!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ