List startup services

Để liệt kê tất cả các dịch vụ sẽ tự động chạy khi hệ thống khởi động, bạn có thể sử dụng lệnh systemctl với tham số list-unit-filesgrep để lọc các dịch vụ được kích hoạt.

Dưới đây là các cách để xem danh sách dịch vụ khởi động:

1. Liệt kê tất cả các dịch vụ khởi động tự động

Sử dụng lệnh sau để liệt kê tất cả các dịch vụ đã được kích hoạt để tự động chạy khi khởi động:

bash

Copy code

systemctl list-unit-files --type=service | grep enabled

Lệnh này sẽ trả về danh sách các dịch vụ với trạng thái enabled, tức là chúng sẽ được khởi động tự động khi hệ thống khởi động.

2. Xem trạng thái của tất cả các dịch vụ hệ thống

Nếu bạn muốn kiểm tra tất cả các dịch vụ (bao gồm cả dịch vụ đang chạy và không chạy), bạn có thể sử dụng:

bash

Copy code

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

Lệnh này sẽ hiển thị tất cả các dịch vụ trên hệ thống, với trạng thái hiện tại của mỗi dịch vụ (chạy, dừng, hoặc bị lỗi).

3. Kiểm tra trạng thái một dịch vụ cụ thể

Nếu bạn muốn kiểm tra trạng thái của một dịch vụ cụ thể (ví dụ: ddclient), bạn có thể sử dụng lệnh:

bash

Copy code

systemctl is-enabled ddclient

Lệnh này sẽ trả về trạng thái của dịch vụ ddclient, ví dụ: enabled (được kích hoạt để tự động chạy) hoặc disabled (không tự động chạy khi khởi động).

4. Xem trạng thái của dịch vụ hiện tại

Để xem dịch vụ nào đang chạy, bạn có thể sử dụng lệnh:

bash

Copy code

systemctl list-units --type=service

Lệnh này sẽ hiển thị danh sách các dịch vụ hiện tại và trạng thái của chúng (chạy hay không).

Các trạng thái dịch vụ

Các trạng thái dịch vụ trong systemd có thể có một số chỉ báo khác nhau, mỗi chỉ báo thể hiện tình trạng cụ thể của dịch vụ đó.

1. Masked

Khi một dịch vụ có trạng thái masked, có nghĩa là dịch vụ đó được ngừng hoàn toànkhông thể khởi động. Đây là cách để ngăn dịch vụ khởi động một cách có chủ ý. Thực tế, khi dịch vụ bị masked, hệ thống sẽ tạo một liên kết symbolic đến /dev/null cho tệp unit của dịch vụ đó, khiến dịch vụ không thể thực thi.

Ví dụ về lệnh để mask một dịch vụ:

bash

Copy code

sudo systemctl mask ddclient

Để bỏ mask một dịch vụ:

bash

Copy code

sudo systemctl unmask ddclient

Dịch vụ masked sẽ không thể được khởi động, dù bạn có cố gắng khởi động nó bằng các lệnh như systemctl start hay systemctl restart.

2. Indirect

Trạng thái indirect cho biết một dịch vụ không được trực tiếp kích hoạt bởi người dùng, mà thay vào đó, nó được kích hoạt thông qua một dịch vụ khác, thông qua các phụ thuộc (dependencies). Khi một dịch vụ có trạng thái indirect, có nghĩa là dịch vụ đó được gọi từ một dịch vụ khác hoặc một nhóm dịch vụ.

Ví dụ: Một dịch vụ có thể được khởi động không trực tiếp mà thông qua một dịch vụ hoặc nhóm dịch vụ phụ thuộc vào nó. Ví dụ, một dịch vụ mạng có thể yêu cầu dịch vụ DNS khởi động đầu tiên. Dịch vụ DNS có thể có trạng thái indirect vì nó được yêu cầu bởi một dịch vụ khác.

3. Enable-runtime

Khi trạng thái là enable-runtime, dịch vụ đó được kích hoạt trong một khoảng thời gian nhất địnhkhông được kích hoạt vĩnh viễn. Các dịch vụ với trạng thái này sẽ chỉ khởi động và hoạt động trong một phiên làm việc của hệ thống, nhưng chúng không được giữ khi hệ thống khởi động lại. Đây là một cấu hình cho phép dịch vụ chỉ hoạt động trong thời gian cần thiết và sẽ bị vô hiệu hóa sau khi hệ thống được khởi động lại.

Lý do sử dụng enable-runtime có thể là để dịch vụ chỉ chạy khi cần, chẳng hạn như các dịch vụ liên quan đến cấu hình tạm thời hoặc ứng dụng chỉ cần chạy trong phiên làm việc cụ thể.


Tóm lại:

  • Masked: Dịch vụ bị vô hiệu hóa hoàn toàn và không thể khởi động.
  • Indirect: Dịch vụ không được khởi động trực tiếp mà qua các phụ thuộc của dịch vụ khác.
  • Enable-runtime: Dịch vụ chỉ chạy trong thời gian phiên làm việc và không tự động khởi động lại sau khi hệ thống khởi động lại.