Lệnh systemctl
Xem thửsystemctl là CLI chính để điều khiển unit systemd.
Vòng đời service thường dùng
systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx # nếu unit hỗ trợ ExecReload
sudo systemctl enable nginx # bật theo boot (symlink wants/)
sudo systemctl disable nginx
sudo systemctl enable --now nginx # enable + start
sudo systemctl disable --now nginx
| Lệnh | Ý nghĩa |
|---|---|
start/stop | Chạy/dừng ngay |
enable/disable | Có/không tự chạy sau boot |
restart | stop+start |
reload | nạp lại config nếu có |
mask | chặn start hoàn toàn (symlink tới /dev/null) |
unmask | gỡ mask |
Đang tải sơ đồ…
Cách đọc sơ đồ. Có hai trục độc lập: trạng thái chạy hiện tại (start, stop) và việc có tự chạy khi boot (enable, disable). enable chỉ tạo liên kết cho lần boot sau chứ không chạy service ngay, còn enable --now làm cả hai. Vì vậy enable không đồng nghĩa với start.
systemctl is-active nginx
systemctl is-enabled nginx
systemctl is-failed nginx
systemctl list-units --type=service --state=failed
Đọc status cho troubleshooting
systemctl status nginx -l --no-pager
Chú ý: Active: (active (running), failed, inactive), Main PID, dòng log gần nhất, đường dẫn unit file (Loaded:).
Sửa cấu hình đúng cách
systemctl cat nginx
sudo systemctl edit nginx # drop-in override
sudo systemctl daemon-reload # sau khi đổi unit file
sudo systemctl restart nginx
daemon-reload không restart service — chỉ nạp lại định nghĩa unit.
Đang tải sơ đồ…
Cách đọc sơ đồ. systemctl edit ghi một bản drop-in thay vì sửa tệp của gói, và daemon-reload chỉ nạp lại định nghĩa unit. Process đang chạy chưa thay đổi gì cho đến khi restart, vì vậy đổi unit cần đủ cả hai bước.
Phụ thuộc
systemctl list-dependencies nginx.service
Unit có thể Requires=, Wants=, After=, Before= — giải thích vì sao A start trước B.
Lỗi thường gặp
enablenhưng quênstartthì sau reboot mới có, lúc này chưa chạy.- Sửa unit rồi quên
daemon-reload. maskrồi quên, mãi không start được.
Luyện tập
Với một service lab (ví dụ cron/nginx): chạy lần lượt status, restart, is-enabled, rồi cat unit.