⚙️ Система, Процеси та Сервіси
Адміністрування операційної системи, керування правами доступу та фоновими процесами (демонами).
Системні логи (Logs)
У Linux більшість подій реєструється в системних журналах. Це основний інструмент для діагностики.
journalctl - Головний журнал
Журнал системних подій (systemd). Зберігає інформацію про роботу ядра, служб та програм.
| Команда | Опис |
|---|---|
journalctl -n 20 |
Показати останні 20 записів. |
journalctl -f |
Follow. Моніторинг журналу в реальному часі. |
journalctl -u ssh |
Показати логи конкретного сервісу (наприклад, SSH). |
journalctl -xe |
Показати розширену інформацію про помилки (часто система просить це ввести). |
journalctl --since "1 hour ago" |
Що сталося за останню годину? |
dmesg - Логи ядра
Містить повідомлення ядра (драйвери, апаратне забезпечення, живлення).
dmesg | tail # Останні повідомлення
dmesg -w # В реальному часі (вставте флешку і побачите магію)
dmesg | grep -i error # Знайти всі помилки (ігноруючи регістр)
Процеси (Processes)
Управління процесами та моніторинг ресурсів.
htop - Диспетчер завдань
Набагато кращий за top.
- F3 (Search): Знайти процес за назвою.
- F4 (Filter): Показати тільки певні процеси (наприклад, тільки
python). - F9 (Kill): Вбити вибраний процес.
- Клік мишкою: Можна сортувати колонки (CPU%, MEM%).
Швидка інформація про систему
Командний рядок
| Команда | Приклад | Пояснення |
|---|---|---|
ps aux |
ps aux \| grep python |
Показати всі процеси та відфільтрувати тільки Python. |
kill |
kill 1234 |
Надіслати сигнал завершення (SIGTERM). |
kill -9 |
kill -9 1234 |
Примусове завершення (SIGKILL). Використовуйте, якщо процес не відповідає. |
watch - Моніторинг в реальному часі
Команда watch виконує іншу команду кожні N секунд.
Створення власного демона (Service)
Рекомендований спосіб запуску фонових процесів (ботів, веб-серверів) - створення Systemd Service.
Він вміє:
- Запускати скрипт при старті системи.
- Перезапускати його, якщо він впаде (помилка в коді).
- Писати логи в загальний журнал.
Крок 1. Створення файлу
Створимо файл конфігурації:
Крок 2. Конфігурація (з деталями)
[Unit]
# Короткий опис, що це за сервіс (видно в status)
Description=My Super Telegram Bot
# Порядок запуску. network.target означає "чекати, поки з'явиться інтернет".
# Якщо боту треба база даних, можна додати: After=postgresql.service
After=network.target
[Service]
# Від імені якого користувача запускати скрипт.
# ВАЖЛИВО: Не запускайте від root без потреби!
User=pi
Group=pi
# Робоча папка. Це аналог команди `cd /home/pi/my_bot` перед запуском.
WorkingDirectory=/home/pi/my_bot
# Команда запуску.
# ЛАЙФХАК: Вказуйте ПОВНИЙ шлях до Python у вашому віртуальному середовищі (venv).
# Так вам не треба нічого активувати вручну.
ExecStart=/home/pi/my_bot/venv/bin/python main.py
# Автоматичний перезапуск.
# always = перезапускати завжди (при помилці, при kill, при завершенні).
# on-failure = тільки якщо впав з помилкою.
Restart=always
# Зачекати 5 секунд перед перезапуском (щоб не "спамити" стартами, якщо помилка постійна).
RestartSec=5
# Що робити з логами (стандартний вивід print()).
# Вони полетять в journalctl.
StandardOutput=inherit
StandardError=inherit
[Install]
# Цей рядок каже системі: "Запустити цей сервіс, коли завантажиться режим Multi-User"
# (звичайний режим роботи Linux).
WantedBy=multi-user.target
Крок 3. Активація
# 1. Сказати systemd перечитати файли (робити після кожної зміни файлу .service)
sudo systemctl daemon-reload
# 2. Додати в автозавантаження (Enable)
sudo systemctl enable mybot
# 3. Запустити прямо зараз (Start)
sudo systemctl start mybot
Крок 4. Керування
- Статус:
sudo systemctl status mybot(покаже, чи працює, і останні логи). - Логи:
journalctl -u mybot -f(читати print-и бота в реальному часі).
Планувальник завдань (cron)
Якщо треба запустити щось за розкладом (наприклад, бекап раз на день), а не щоб воно висіло в пам'яті постійно.
Формат: хвилини години день місяць день_тижня команда
Приклади:
# Запускати скрипт кожні 10 хвилин
*/10 * * * * /usr/bin/python3 /home/pi/backup.py
# Запускати о 3:00 ночі щодня
0 3 * * * /home/pi/backup_db.sh
# Перезавантажувати RPi кожен понеділок о 5 ранку
0 5 * * 1 sudo reboot
Crontab Guru
Синтаксис cron важкий. Використовуйте сайт crontab.guru, щоб перевірити свій розклад.
Права доступу (Permissions)
Числа в chmod
Часто ви бачите chmod 777 або 755. Що це значить?
Це сума прав:
- 4 = Read (читати)
- 2 = Write (писати)
- 1 = Execute (запускати)
Три цифри - це (1) Власник, (2) Група, (3) Інші.
- 7 (4+2+1) = Все дозволено.
- 5 (4+1) = Читати і Запускати (але не редагувати).
- 6 (4+2) = Читати і Писати.
Приклади:
chmod 755 script.py-> Повний доступ власнику, іншим - читання/виконання. (Стандарт для програм).chmod 600 secret.key-> Читання/запис тільки для власника, іншим - заборонено. (Для SSH ключів).chmod +x script.sh-> Просто додати право запуску всім (найчастіша команда).