Bài 04: Quản lý service với systemd

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.

Sau bài này anh sẽ biết:

  • 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

Mục tiêu: kiểm tra trạng thái service và đọc log mà không phá hệ thống.
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.
Lưu ý production: Với SSH, luôn giữ một phiên đang đăng nhập trước khi restart/reload để tránh tự khóa khỏi server.

8. Checklist khi service lỗi

  1. systemctl status service
  2. journalctl -u service --since "30 minutes ago"
  3. Kiểm tra config syntax nếu service hỗ trợ.
  4. Kiểm tra port có listen không bằng ss -tulpn.
  5. Restart/reload sau khi hiểu nguyên nhân.

9. Bài tập

  1. Chạy systemctl --failed và ghi lại có service nào failed không.
  2. Chọn một service an toàn để xem status.
  3. Đọc log service đó trong 1 giờ gần nhất.
  4. Giải thích khác nhau giữa enable và start.

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *