Danh sách dịch vụ systemctl được giải thích: Cách xem, quản lý và khắc phục sự cố dịch vụ Linux

.## 1. Giới thiệu

Khi sử dụng Linux, có rất nhiều tình huống bạn muốn kiểm tra trạng thái của các dịch vụ hoặc xem danh sách các tiến trình đang chạy. Trong những trường hợp như vậy, lệnh systemctl cực kỳ hữu ích.

Lệnh này hoạt động với systemd, hệ thống khởi động và quản lý dịch vụ được sử dụng trong các bản phân phối Linux hiện đại. Nó cung cấp một loạt các chức năng, bao gồm kiểm tra trạng thái dịch vụ (unit), khởi động, dừng, khởi động lại các dịch vụ, và hiển thị danh sách dịch vụ.

Từ góc độ của một “danh sách dịch vụ systemctl”, bạn không chỉ có thể xem các dịch vụ đang hoạt động mà còn các dịch vụ đã bị vô hiệu hoá và những dịch vụ được cấu hình để khởi động tự động, cho phép bạn hiểu cấu hình tổng thể của hệ thống từ nhiều khía cạnh.

Chương này tóm tắt ngắn gọn về systemctl và nêu ra những gì bạn sẽ học trong bài viết này.

目次

Systemctl là gì?

systemctl là công cụ tiêu chuẩn để điều khiển và kiểm tra các “unit” khác nhau như dịch vụ, target và điểm mount trên các bản phân phối Linux dựa trên systemd.

Ví dụ, nó được dùng để khởi động hoặc dừng các dịch vụ như Apache (httpd) và SSH, cũng như hiển thị trạng thái của chúng dưới dạng danh sách.

Mối quan hệ giữa systemd và systemctl

systemd là cơ chế cốt lõi chịu trách nhiệm cho quá trình khởi động Linux và quản lý dịch vụ, thay thế các hệ thống cũ như SysVinit và Upstart. Công cụ dòng lệnh dùng để tương tác với systemd là systemctl.

Nói cách khác, nếu systemd là trung tâm chỉ huy, thì systemctl là người vận hành đưa ra các lệnh.

Những gì bạn sẽ học trong bài viết này

Bài viết này trả lời các câu hỏi sau:

  • Làm thế nào để xem danh sách các dịch vụ đang chạy hiện tại?
  • Làm sao để hiển thị tất cả các dịch vụ, bao gồm cả những dịch vụ không hoạt động?
  • Làm thế nào để kiểm tra một dịch vụ có được khởi động tự động khi boot hay không?
  • Bạn nên diễn giải kết quả của danh sách dịch vụ như thế nào?

Để đảm bảo rõ ràng cho người mới bắt đầu với Linux, các ví dụ lệnh và giải thích kết quả được cung cấp chi tiết.

2. Cách hiển thị danh sách dịch vụ bằng systemctl

Trong quản trị hệ thống Linux, việc nhanh chóng nắm bắt danh sách các dịch vụ là vô cùng quan trọng. Sử dụng lệnh systemctl, bạn có thể dễ dàng kiểm tra các dịch vụ đang hoạt động, các dịch vụ không hoạt động và các cài đặt cấu hình khởi động.

Phần này giải thích các phương pháp liệt kê dịch vụ từ ba góc độ sau:

  • Danh sách các dịch vụ đang hoạt động
  • Danh sách tất cả các dịch vụ (bao gồm cả những dịch vụ không hoạt động)
  • Danh sách các file unit dịch vụ (bao gồm cài đặt khởi động)

2.1 Hiển thị danh sách các dịch vụ đang hoạt động hiện tại

Để kiểm tra các dịch vụ đang chạy, sử dụng lệnh sau:

systemctl list-units --type=service

Lệnh này hiển thị danh sách các dịch vụ đang hoạt động. Kết quả bao gồm các trường sau:

FieldDescription
UNITService name (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService state (e.g., active, inactive, failed)
SUBMore detailed status (e.g., running, exited, dead)
DESCRIPTIONService description

Thông tin này cho phép bạn xác định, ví dụ, nginx có đang chạy hay không hoặc những dịch vụ nào hiện đang hoạt động.

2.2 Hiển thị tất cả các dịch vụ, bao gồm cả những dịch vụ không hoạt động

Mặc định, list-units chỉ hiển thị các dịch vụ đang hoạt động. Để bao gồm các dịch vụ không hoạt động, thêm tùy chọn --all.

systemctl list-units --type=service --all

Lệnh này hiển thị các dịch vụ không hoạt động và những dịch vụ chưa bao giờ được khởi động.

Bạn có thể lọc kết quả thêm theo trạng thái dịch vụ bằng tùy chọn --state=:

systemctl list-units --type=service --state=inactive

Điều này hữu ích khi bạn chỉ muốn xem các dịch vụ đã dừng.

2.3 Xem danh sách các file unit dịch vụ

Để kiểm tra dịch vụ nào được bật hoặc tắt khi khởi động, sử dụng lệnh sau:

systemctl list-unit-files --type=service

Lệnh này hiển thị tất cả các file unit dịch vụ cùng với trạng thái bật hoặc tắt của chúng.

STATEDescription
enabledAutomatically starts at boot
disabledDoes not start automatically
staticCannot be enabled or disabled manually
maskedExplicitly disabled and cannot be started

Danh sách này giúp bạn hình dung trực quan dịch vụ nào sẽ khởi động khi boot và xác định các dịch vụ bị ẩn (masked) một cách nhầm lẫn.

3. Quản lý dịch vụ cơ bản với systemctl

Lệnh systemctl cho phép bạn khởi động, dừng, khởi động lại các dịch vụ và cấu hình hành vi khởi động.

3.1 Khởi động một dịch vụ

.

sudo systemctl start service-name

Ví dụ:

sudo systemctl start httpd.service

3.2 Dừng một dịch vụ

sudo systemctl stop service-name

Ví dụ:

sudo systemctl stop sshd.service

3.3 Khởi động lại một dịch vụ

sudo systemctl restart service-name

Ví dụ:

sudo systemctl restart nginx.service

3.4 Kiểm tra trạng thái dịch vụ

systemctl status service-name

Ví dụ:

systemctl status mysql.service

3.5 Bật khởi động tự động

sudo systemctl enable service-name

Ví dụ:

sudo systemctl enable docker.service

3.6 Tắt khởi động tự động

sudo systemctl disable service-name

Ví dụ:

sudo systemctl disable cups.service

3.7 Kiểm tra trạng thái khởi động

systemctl is-enabled service-name
enabled

4. Các tùy chọn hữu ích của systemctl và kỹ thuật nâng cao

4.1 Liệt kê các phụ thuộc của dịch vụ

systemctl list-dependencies service-name

4.2 Xem nội dung tệp unit

systemctl cat service-name

4.3 Tải lại các tệp unit

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

4.4 Xem nhật ký dịch vụ

journalctl -u service-name

5. Các vấn đề thường gặp và khắc phục

5.1 Khi một dịch vụ không khởi động được

systemctl status service-name
journalctl -xe

5.2 Hiểu các thông báo lỗi trong đầu ra status

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code)

5.3 Các dịch vụ dừng ngay sau khi khởi động

  • Lỗi cấu hình
  • Xung đột cổng
  • Thiếu tệp hoặc thư mục
  • Quyền truy cập không đủ

5.4 Khi một dịch vụ bị mask

sudo systemctl unmask service-name

6. Tóm tắt

Quản lý dịch vụ là một phần thiết yếu của hoạt động hệ thống Linux, và systemctl đóng vai trò trung tâm trong việc điều khiển và hiểu các dịch vụ hệ thống.

7. Câu hỏi thường gặp (FAQ)

Phần này trả lời các câu hỏi thường gặp về systemctl và quản lý dịch vụ.

Câu hỏi 1. Sự khác nhau giữa systemctl và lệnh service là gì?

Trả lời 1.
systemctl là lệnh quản lý dịch vụ được thiết kế cho các hệ thống dựa trên systemd và là công cụ tiêu chuẩn được hầu hết các bản phân phối Linux hiện đại như Ubuntu, CentOS và Fedora sử dụng.
Ngược lại, lệnh service được dùng trên các hệ thống cũ dựa trên SysVinit. Mặc dù nó vẫn có thể tồn tại để tương thích, việc sử dụng systemctl được khuyến nghị mạnh mẽ trong môi trường systemd.

Câu hỏi 2. Sự khác nhau giữa list-unitslist-unit-files là gì?

Trả lời 2.

  • list-units hiển thị các unit hiện đang được tải , nghĩa là các dịch vụ đang chạy hoặc đã được sử dụng gần đây.
  • list-unit-files hiển thị tất cả các tệp unit và trạng thái kích hoạt của chúng (enabled, disabled, v.v.). Nói ngắn gọn, một lệnh cho biết những gì hiện đang hoạt động, trong khi lệnh còn lại cho biết cách các dịch vụ được cấu hình.

Câu hỏi 3. Các dịch vụ ở trạng thái static có thể được khởi động không?

Trả lời 3.
Có, các dịch vụ ở trạng thái static có thể được khởi động thủ công bằng lệnh start. Tuy nhiên, chúng không thể được bật để tự động khởi động khi khởi động hệ thống.
Điều này là vì các dịch vụ static được thiết kế để được khởi động như là phụ thuộc của các unit khác.

Câu hỏi 4. Một dịch vụ bị mask và không thể khởi động. Tôi nên làm gì?

Trả lời 4.
Một dịch vụ masked bị vô hiệu hoá hoàn toàn và không thể khởi động. Để khắc phục, hãy bỏ mask dịch vụ bằng lệnh sau:

sudo systemctl unmask service-name

Sau khi bỏ mask, bạn có thể khởi động dịch vụ bình thường.

Câu hỏi 5. Có phương pháp GUI nào để xem trạng thái dịch vụ không?

A5.
Tùy thuộc vào bản phân phối, các công cụ như gnome-system-monitor, KSysGuard, hoặc Cockpit cho phép bạn xem trạng thái dịch vụ qua giao diện đồ họa.
Tuy nhiên, đối với các hoạt động nâng cao như kích hoạt hoặc vô hiệu hóa dịch vụ khi khởi động, systemctl vẫn là phương pháp đáng tin cậy nhất.

Q6. Tôi nên đặt các tệp đơn vị tùy chỉnh ở đâu?

A6.
Các tệp đơn vị tùy chỉnh thường được đặt trong /etc/systemd/system/. Sau khi chỉnh sửa hoặc thêm một tệp đơn vị, luôn chạy lệnh sau:

sudo systemctl daemon-reload

Sau đó, bạn có thể quản lý dịch vụ bình thường bằng cách sử dụng start hoặc enable.

年収訴求