Dùng lệnh Systemctl trong Linux để quản lý service
Trong bài này mình sẽ hướng dẫn cách sử dụng lệnh Systemctl trong linux để theo dõi các và quản lý các service.
Trong Linux, một service là một chương trình chạy ở chế độ nền background. Các dịch vụ có thể được khởi động theo yêu cầu của người dùng hoặc tại thời điểm khởi động.
Nếu bạn đang sử dụng Linux để làm và phát triển các dự án thì sẽ cần chạy nhiều dịch vụ khác nhau như máy chủ web, ssh hoặc crontab. Bạn cần biết cách liệt kê các dịch vụ đang chạy hoặc kiểm tra trạng thái dịch vụ, giúp gỡ lỗi khi hệ thống có sự cố.
1. Systemctl là gì?
Systemctl là một tiện ích dòng lệnh, có nhiệm vụ điều khiển hệ thống systemd và service manager. Systemd là một bộ công cụ để quản lý hệ thống Linux, nó được sử dụng để khởi động máy, quản lý dịch vụ, hệ thống file tự động, ghi sự kiện, thiết lập tên máy chủ và các tác vụ hệ thống khác. Systemd sử dụng các khái niệm unit, package, service, socket.
Bài viết này được đăng tại [free tuts .net]
Systemctl được sử dụng để kiểm soát systemd và quản lý các dịch vụ. Nó là một phần của hệ sinh thái systemd và có sẵn theo mặc định trên tất cả các hệ thống.
Với Systemctl bạn có thể kiểm tra được trạng thái của các service, khởi động và tắt service, gỡ rối hệ thống khi xảy ra sự cố.
2. Liệt kê các service bằng systemctl
Để lấy danh sách tất cả các service đã load trong hệ thống Linux thì bạn chạy lệnh sau:
sudo systemctl list-units --type service
Kết quả trả về có dạng như sau:
UNIT LOAD ACTIVE SUB DESCRIPTION cron.service loaded active running Regular background program processing daemon ...
Giải thích chi tiết từng cột tính từ trái qua phải như sau:
- UNIT là tên của service (unit).
- LOAD là tình trạng của service đã load vào bộ nhớ hay chưa.
- ACTIVE là trạng thái kích hoạt service cấp cao, có các giá trị gồm: active, reloading, inactive, failed, activating, deactivating
- SUB là trạng thái kích hoạt service cấp thấp, giá trị của nó tùy thuộc vào từng unit, chủ yếu là: states, dead, exited, failed, inactive, or running.
- DESCRIPTION là phần mô tả ngắn gọn về service.
Theo mặc định thì lệnh trên chỉ liệt kê các unit đã load và đang active. Để xem thêm các unit đã load nhưng inactive thì hãy thêm tùy chọn --all.
sudo systemctl list-units --type service --all
Nếu bạn muốn xem tất cả các unit đã được cài đặt thì hãy sử dụng lệnh sau:
sudo systemctl list-unit-files
3. Hiển thị trạng thái của service bằng systemctl
Để kiểm tra trạng thái của một service thì hãy sử dụng lệnh systemctl status:
sudo systemctl status <service_name>.service
Trong đó service_name chính là tên của service mà bạn muốn kiểm tra.
Ví dụ dưới đây mình đang kiểm tra trạng thái của nginx service.
sudo systemctl status nginx.service
Bạn không nhất thiết phải thêm hậu tố .service. Với lệnh trên thì mình sẽ viết lại là:
systemctl status nginx
Kết quả trả về có dạng như sau:
Nếu bạn chỉ muốn kiểm tra service có active hay không thì hãy chạy lệnh sau:
systemctl is-active nginx
Kết quả trả về là:
active
3. Một vài cách sử dụng khác của lệnh systemctl trong Linux
Sau đây mình sẽ làm thêm một vài ví dụ nữa để giúp các bạn hiểu rõ hơn về lệnh này nhé.
VD1: Kiểm tra xem systemd đã được cài đặt trên hệ thống của bạn hay chưa và phiên bản của systemctl hiện tại là gì?
systemctl --version
VD2: Kiểm rta xem systemmd và systemctl được cài đặt ở đâu trên hệ thống?
whereis systemd systemd: /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz whereis systemctl systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz
VD3: Kiểm tra xem systemd có đang chạy hay không?
ps -eaf | grep [s]ystemd
VD4: Kiểm tra quá trình khởi động systemd
systemd-analyze Startup finished in 487ms (kernel) + 2.776s (initrd) + 20.229s (userspace) = 23.493s
VD5: Lấy danh sách tất cả unit đang chạy.
systemctl list-units
VD6: Lấy danh sách tất cả unit đang có sẵn.
systemctl list-unit-files
VD7: Lấy danh sách tất cả unit load thất bại.
systemctl --failed
VD8: Kiểm tra service cron có kích hoạt hay không?
systemctl is-enabled crond.service
VD9: Kiểm tra trạng thái của một service bất kì. Như trong ví dụ dưới đây là mình kiểm tra firewalld
systemctl status firewalld.service
4. Ví dụ lệnh systemctl nâng cao trong Linux
VD1: Để start, restart, stop, reload và kiểm tra trạng thái của một dịch vụ thì ta sử dụng các lệnh dưới đây.
systemctl start httpd.service systemctl restart httpd.service systemctl stop httpd.service systemctl reload httpd.service systemctl status httpd.service
Trong các lệnh trên mình sử dụng dịch vụ httpd để làm mẫu.
VD2: Để kill một service thì ta chạy lệnh sau.
systemctl kill httpd
Ngay lập tức service sẽ chết hoàn toàn nên không còn hoạt động trên hệ thống nữa.
VD3: Để xem thông tin cấu hình của một service thì ta dùng tùy chọn show.
systemctl show httpd
VD4: Để xem tất cả các phụ thuộc dependencies của một service thì ta dùng lệnh sau.
systemctl list-dependencies httpd.service
VD5: Cách khởi động lại, tạm dừng, tạm ngừng, ngủ đông hoặc đặt hệ thống ở chế độ hybrid-sleep thì ta dùng các lệnh sau.
systemctl reboot systemctl halt systemctl suspend systemctl hibernate systemctl hybrid-sleep
Như vậy là mình đã hướng dẫn xong cách sử dụng lệnh systemctl trong Linux. Đây là lệnh được sử dụng để quản lý service trên Linux nên được sử dụng rất thường xuyên trong quá trình quản trị hệ thống.