Hướng dẫn sử dụng lệnh Systemctl trong Linux

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ố.

Hướng dẫn sử dụng lệnh Systemctl trong Linux

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.

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:

Hướng dẫn sử dụng lệnh Systemctl trong Linux

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

4. 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

5. 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

Chúc bạn nhanh chóng thành thạo cách sử dụng lệnh Systemctl trong Linux!

Nguồn: freetuts

Mọi người cùng tìm kiếm: systemctl, systemctl status, sudo systemctl, linux systemctl, system ctl, systemctl service, systemtcl