Як автоматизувати щоденні перевірки справності Linux?

Дізнайся, як швидко налаштувати скрипт перевірки справності Linux і запускати його щодня через cron або під час входу в систему
Працюєш із сервером Linux і хочеш заощадити час на рутинних завданнях? Один із найефективніших способів уникнути аварій і перевантажень — налаштувати автоматичні перевірки стану системи. Це можна зробити за допомогою простого Bash-скрипту і планувальника завдань cron.
У цій статті розбираємо:
- навіщо перевіряти справність щодня;
- які метрики варто моніторити;
- як створити скрипт перевірки та налаштувати його запуск через cron;
- як виводити результати у лог або на пошту;
- що ще можна автоматизувати додатково.
Чому варто автоматизувати перевірки?
Очікувати скарг від користувачів — не найкраща стратегія для сисадміна чи DevOps-інженера. Краще знати наперед, коли не вистачає вільного місця на диску, злетів якийсь сервіс або підвищене навантаження на CPU.
Ручна перевірка — це довго і легко проґавити щось важливе. Автоматизована — надійна й точна та не дає пропустити зміни в системі.
Що саме перевіряємо?
У базовий скрипт можна додати такі метрики:
- Використання диска — щоб не допустити переповнення.
- Завантаження CPU — щоб бачити, якщо сервер перевантажений.
- Пам’ять — обсяг використаної оперативної пам’яті та swap-простору.
- Стан сервісів — якщо служба завершила роботу або не запускається.
- Аптайм — як довго працює система без перезапуску.
- Процеси з найбільшим споживанням ресурсів — CPU або RAM.
- Оновлення пакетів — за потреби.
- Температура процесора — якщо критичне нагрівання.
- Мережеві інтерфейси — трафік, активність, помилки.
- Останні логи ядра — для виявлення критичних подій.
- Активні мережеві з’єднання — підозріла активність чи завислі сесії.
- Статус SSH або бази даних — чи приєднано, чи працює.
Як написати скрипт перевірки?
Створимо окрему директорію для скриптів:
sudo mkdir -p /opt/scripts
Тепер створимо файл:
sudo nano /opt/scripts/system-health.sh
Скопіюй у файл такий базовий скрипт:
#!/bin/bash
LOGFILE=”/var/log/system-health-$(date +%F).log”
HOSTNAME=$(hostname)
DATE=$(date)
{
echo “=== System Health Report for $HOSTNAME ===”
echo “Generated on: $DATE”
echo
echo “[Disk Usage]”
df -h –output=source,size,used,avail,pcent,target | tail -n +2
echo “[CPU Load]”
uptime | awk -F’load average:’ ‘{ print $2 }’
echo “[Memory]”
free -h
echo “[Top Memory Consumers]”
ps -eo pid,%mem,command –sort=-%mem | head -n 6
echo “[Top CPU Consumers]”
ps -eo pid,%cpu,command –sort=-%cpu | head -n 6
echo “[Failed Services]”
systemctl –failed –no-legend || echo “No failed services.”
echo “[Uptime]”
uptime -p
echo “[Updates]”
apt list –upgradable 2>/dev/null | grep -v “Listing…” || echo “System up to date.”
} > “$LOGFILE”
Збережи файл і зроби його виконуваним:
sudo chmod +x /opt/scripts/system-health.sh
Можеш одразу протестувати:
sudo /opt/scripts/system-health.sh
Результати збережуться в /var/log/system-health-YYYY-MM-DD.log.
Як налаштувати щоденний запуск?
Використаємо cron. Відкрий crontab від root-користувача:
sudo crontab -e
І додай наприкінці рядок для запуску щодня о 7:00:
0 7 * * * /opt/scripts/system-health.sh >> /var/log/system-health-cron.log 2>&1
Як отримувати звіти на пошту?
Хочеш бачити результати на email? Додай до скрипта:
MAIL_TO=”you@example.com”
if command -v mail &> /dev/null; then
mail -s “Daily Health Report for $HOSTNAME” “$MAIL_TO” < “$LOGFILE”
fi
І встанови поштову утиліту:
sudo apt install mailutils -y # для Debian/Ubuntu
sudo dnf install mailx -y # для CentOS/RHEL
Для хмарних серверів варто також налаштувати postfix або ssmtp.
Альтернатива: скрипт MOTD при вході
Щоб бачити короткий звіт одразу після входу через SSH, додай цей скрипт:
sudo nano /etc/update-motd.d/99-system-health
#!/bin/bash
echo “==== System Health: $(hostname) ====”
echo “Uptime: $(uptime -p)”
echo “Disk: $(df -h / | awk ‘NR==2 {print $5 ” used”}’)”
echo “CPU Load: $(uptime | awk -F’load average:’ ‘{print $2}’)”
echo “Memory: $(free -m | awk ‘/Mem:/ {print $3 “MB used / ” $2 “MB”}’)”
echo “Failed Services: $(systemctl –failed –no-legend | wc -l)”
І зроби його виконуваним:
sudo chmod +x /etc/update-motd.d/99-system-health
Цей варіант працює на Ubuntu та Debian, де увімкнено динамічні MOTD.
Що ще можна додати?
Якщо хочеш більш детальну перевірку, можеш включити:
- температуру CPU (sensors);
- список користувачів, які входили (last);
- активні мережеві підключення (ss -tuln);
- журнал ядра (dmesg | tail -n 20);
- статус важливих сервісів: systemctl status ssh, systemctl status nginx тощо.
Трохи підсумків
Такий Bash-скрипт — простий і ефективний спосіб дізнатися про стан системи ще до того, як щось піде не так. Його легко змінити під свої потреби: додати моніторинг вебсервера, чи бази даних.
Одна команда у cron — і кожного ранку ти матимеш повний звіт: чи все гаразд із сервером. А отже, більше контролю — менше стресу.
Linux здається складним лише на перший погляд. Почни з курсу для початківців — і поступово вийдеш на рівень, коли термінал стане звичним інструментом.