Quản lý dịch vụ trong môi trường SysV và systemd
Trong vận hành hệ thống Linux, việc thay đổi cấu hình dịch vụ thường yêu cầu khởi động lại dịch vụ để hệ điều hành nạp lại cấu hình mới. Đây là thao tác quen thuộc, được gọi là “bouncing” dịch vụ.
Hiện nay có hai cơ chế quản lý dịch vụ phổ biến: SysV (init.d) và systemd. Việc nắm cả hai là rất quan trọng, vì tùy từng hệ thống bạn sẽ gặp các cách quản lý khác nhau.
1. Quản lý dịch vụ với SysV (service command)
Trong các bản Linux truyền thống, dịch vụ được quản lý qua startup scripts nằm trong thư mục /etc/init.d/. Các script này cho phép start, stop hoặc restart dịch vụ.
Ví dụ với dịch vụ vsftpd:
# Kiểm tra tiến trình đang chạy
ps -ef | grep ftp # Dừng dịch vụ
sudo service vsftpd stop
# Khởi động lại dịch vụ
sudo service vsftpd start
# Restart trực tiếp
sudo service vsftpd restart
Cú pháp chung:
sudo service <service_name> start|stop|restart
Ngoài ra, bạn có thể chạy trực tiếp script trong /etc/init.d:
cd /etc/init.d sudo ./cups restart
Lưu ý: Cần quyền root (dùng sudo) để quản lý dịch vụ.
2. Quản lý dịch vụ với systemd (systemctl command)
Ngày nay, systemd đã trở thành chuẩn mặc định cho hầu hết các bản phân phối Linux hiện đại. Nó quản lý các thành phần gọi là unit, trong đó dịch vụ là một loại unit. Các unit được định nghĩa trong file .service (ví dụ: vsftpd.service) thường nằm trong /usr/lib/systemd/system/.
Với systemd, bạn không cần chỉ định đầy đủ đường dẫn, chỉ cần tên dịch vụ:
# Start dịch vụ
sudo systemctl
start vsftpd # Stop dịch vụ
sudo systemctl stop vsftpd
# Restart dịch vụ
sudo systemctl restart vsftpd
# Reload lại cấu hình dịch vụ mà không cần restart
sudo systemctl
reload vsftpd
# Reload lại toàn bộ cấu hình systemd
sudo systemctl daemon-reload
Điểm mạnh của systemd là hỗ trợ reload cấu hình mà không cần downtime dịch vụ – rất hữu ích cho môi trường production.
3. Lưu ý khi phân biệt service và systemctl
4. Câu hỏi ôn tập
Câu hỏi: Có 2 phương pháp nào để dừng một network service? (Chọn 2)
👉 Kỹ sư hệ thống cần thành thạo cả hai lệnh (service và systemctl), vì trong môi trường thực tế bạn sẽ gặp song song cả hệ thống cũ (init.d) và mới (systemd), đặc biệt khi quản trị server Linux hỗn hợp hoặc các hệ thống nhúng (embedded system).
Trong vận hành hệ thống Linux, việc thay đổi cấu hình dịch vụ thường yêu cầu khởi động lại dịch vụ để hệ điều hành nạp lại cấu hình mới. Đây là thao tác quen thuộc, được gọi là “bouncing” dịch vụ.
Hiện nay có hai cơ chế quản lý dịch vụ phổ biến: SysV (init.d) và systemd. Việc nắm cả hai là rất quan trọng, vì tùy từng hệ thống bạn sẽ gặp các cách quản lý khác nhau.
1. Quản lý dịch vụ với SysV (service command)
Trong các bản Linux truyền thống, dịch vụ được quản lý qua startup scripts nằm trong thư mục /etc/init.d/. Các script này cho phép start, stop hoặc restart dịch vụ.
Ví dụ với dịch vụ vsftpd:
# Kiểm tra tiến trình đang chạy
ps -ef | grep ftp # Dừng dịch vụ
sudo service vsftpd stop
# Khởi động lại dịch vụ
sudo service vsftpd start
# Restart trực tiếp
sudo service vsftpd restart
Cú pháp chung:
sudo service <service_name> start|stop|restart
Ngoài ra, bạn có thể chạy trực tiếp script trong /etc/init.d:
cd /etc/init.d sudo ./cups restart
Lưu ý: Cần quyền root (dùng sudo) để quản lý dịch vụ.
2. Quản lý dịch vụ với systemd (systemctl command)
Ngày nay, systemd đã trở thành chuẩn mặc định cho hầu hết các bản phân phối Linux hiện đại. Nó quản lý các thành phần gọi là unit, trong đó dịch vụ là một loại unit. Các unit được định nghĩa trong file .service (ví dụ: vsftpd.service) thường nằm trong /usr/lib/systemd/system/.
Với systemd, bạn không cần chỉ định đầy đủ đường dẫn, chỉ cần tên dịch vụ:
# Start dịch vụ
sudo systemctl
start vsftpd # Stop dịch vụ
sudo systemctl stop vsftpd
# Restart dịch vụ
sudo systemctl restart vsftpd
# Reload lại cấu hình dịch vụ mà không cần restart
sudo systemctl
reload vsftpd
# Reload lại toàn bộ cấu hình systemd
sudo systemctl daemon-reload
Điểm mạnh của systemd là hỗ trợ reload cấu hình mà không cần downtime dịch vụ – rất hữu ích cho môi trường production.
3. Lưu ý khi phân biệt service và systemctl
- service → hoạt động trên các file trong /etc/init.d (hệ thống init cũ).
- systemctl → hoạt động trên unit file trong /lib/systemd/system.
- Nếu một dịch vụ có file trong cả hai, systemd sẽ ưu tiên dùng systemctl.
4. Câu hỏi ôn tập
Câu hỏi: Có 2 phương pháp nào để dừng một network service? (Chọn 2)
- ✅ sudo service <service name> stop
- ❌ sudo stop proc <service name>
- ❌ sudo quit proc <service name>
- ✅ sudo systemctl stop <service name>
👉 Kỹ sư hệ thống cần thành thạo cả hai lệnh (service và systemctl), vì trong môi trường thực tế bạn sẽ gặp song song cả hệ thống cũ (init.d) và mới (systemd), đặc biệt khi quản trị server Linux hỗn hợp hoặc các hệ thống nhúng (embedded system).