Bài 04: Quản lý service với systemd
Bài này giúp anh quản lý service Linux bằng systemd: start, stop, restart, enable, kiểm tra trạng thái và đọc log đúng cách.
- Service là gì và systemd quản lý service ra sao.
- Dùng
systemctlđể start/stop/restart/reload. - Phân biệt restart và reload.
- Đọc log service bằng
journalctl.
1. Service là gì?
Service là chương trình chạy nền để cung cấp chức năng: SSH cho đăng nhập từ xa, Nginx phục vụ web, MySQL lưu database, cron chạy tác vụ định kỳ.
systemd là hệ thống quản lý service phổ biến trên Linux hiện đại.
2. Các lệnh systemctl quan trọng
systemctl status ssh sudo systemctl start ssh sudo systemctl stop ssh sudo systemctl restart ssh sudo systemctl reload nginx sudo systemctl enable nginx sudo systemctl disable nginx systemctl is-active nginx systemctl is-enabled nginx
| Lệnh | Ý nghĩa |
|---|---|
start |
Chạy service ngay |
stop |
Dừng service |
restart |
Dừng rồi chạy lại |
reload |
Nạp lại config nếu service hỗ trợ, ít gián đoạn hơn restart |
enable |
Tự chạy khi boot |
3. Lab thực hành với SSH hoặc cron
systemctl status ssh || systemctl status sshd systemctl is-active ssh || systemctl is-active sshd journalctl -u ssh --since "1 hour ago" || journalctl -u sshd --since "1 hour ago"
Một số distro gọi service SSH là ssh, một số gọi là sshd.
4. Đọc trạng thái service
Khi chạy systemctl status nginx, anh cần chú ý:
- Loaded: service unit có tồn tại không, có enabled không.
- Active: đang active/running hay failed.
- Main PID: process chính.
- Log cuối: vài dòng lỗi gần nhất.
5. Đọc log bằng journalctl
journalctl -u nginx --since "30 minutes ago" journalctl -u nginx -f journalctl -p err --since "today" systemctl --failed
-f giống “theo dõi trực tiếp”. -p err lọc lỗi mức error trở lên.
6. Tình huống thực tế: Nginx reload lỗi
sudo nginx -t sudo systemctl reload nginx systemctl status nginx journalctl -u nginx --since "10 minutes ago"
Quy trình đúng là test config trước bằng nginx -t, sau đó mới reload. Nếu reload lỗi, đọc status và journalctl.
7. Lỗi thường gặp
- Restart service liên tục mà không đọc log.
- Quên
enable, reboot xong service không tự chạy. - Dùng restart khi reload là đủ, gây gián đoạn không cần thiết.
- Không kiểm tra config trước khi reload.
8. Checklist khi service lỗi
systemctl status servicejournalctl -u service --since "30 minutes ago"- Kiểm tra config syntax nếu service hỗ trợ.
- Kiểm tra port có listen không bằng
ss -tulpn. - Restart/reload sau khi hiểu nguyên nhân.
9. Bài tập
- Chạy
systemctl --failedvà ghi lại có service nào failed không. - Chọn một service an toàn để xem status.
- Đọc log service đó trong 1 giờ gần nhất.
- Giải thích khác nhau giữa enable và start.
