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

Залишити відповідь

Дякуємо, що поділились