12 lệnh systemctl này sẽ cho phép bạn kiểm soát các dịch vụ systemd của Linux

Tác giả Starlink, T.M.Hai 08, 2024, 10:15:36 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Lệnh systemctl có một số chức năng thường bị bỏ qua. Ngoài việc khởi động và dừng các dịch vụ Linux, bạn có thể liệt kê các dịch vụ đã cài đặt và kiểm tra trạng thái của chúng. Sau đây là hướng dẫn nhanh.


1. Lệnh systemctl là gì?

Lệnh systemctl là công cụ quản lý trung tâm cho hệ thống systemd init, có lẽ được biết đến nhiều nhất là công cụ dùng để khởi động và dừng dịch vụ. Nhưng lệnh này còn hơn thế nữa, bằng chứng là trang hướng dẫn dài hơn 1600 dòng.

Vì systemctl là một công cụ quản lý, không chỉ là trình khởi chạy dịch vụ, bạn có thể sử dụng nó để truy cập thông tin hữu ích về hệ thống và dịch vụ systemd của mình.

Hầu hết các bản phân phối Linux đều áp dụng systemd, nhưng một số vẫn giữ nguyên hệ thống init SystemV truyền thống. Nếu bạn không chắc bản phân phối của mình sử dụng lược đồ nào, bạn có thể dễ dàng tìm hiểu. Chúng ta sẽ sử dụng lệnh stat để xem tệp init.

Mã nguồn [Chọn]
stat /sbin/init

Tệp thực thi /sbin/init là quy trình đầu tiên được khởi chạy trong các bản phân phối dựa trên SystemV. Trên các bản phân phối dựa trên systemd, một liên kết tượng trưng có tên đó trỏ đến tệp systemd.

Dòng đầu tiên của đầu ra cho chúng ta thấy rằng trên máy thử nghiệm Ubuntu này, /sbin/init là liên kết tượng trưng đến tệp /lib/systemd/systemd. Rõ ràng, cài đặt Linux này sử dụng systemd. Nếu đây là bản phân phối dựa trên SystemV, dòng này sẽ chỉ chứa "File: /sbin/init".

2. Dịch vụ thẩm vấn với systemctl

Các dịch vụ được định nghĩa trong các tệp đơn vị và bạn sẽ thấy từ unit nằm rải rác trong các tùy chọn systemctl. Trong trường hợp này, chúng ta có thể lấy danh sách các dịch vụ bằng lệnh list-units với tùy chọn --type.

Mã nguồn [Chọn]
systemctl list-units --type=service

Đầu ra được hiển thị trong trình xem tệp ít hơn, cho phép bạn cuộn qua đầu ra và sử dụng phím / để tìm kiếm.

    Đơn vị : Tên của tệp đơn vị.
    Tải : Nếu tệp đơn vị của dịch vụ đã được đọc vào bộ nhớ mà không có lỗi cú pháp, cột này sẽ chứa "loaded". Điều này không có nghĩa là dịch vụ đang hoạt động.
    Hoạt động : Chế độ xem cấp cao về việc dịch vụ có đang hoạt động hay không. Một dịch vụ đang hoạt động có thể không chạy.
    Sub : Một góc nhìn chi tiết hơn về việc một dịch vụ có đang chạy hay không. Ví dụ, một dịch vụ đang hoạt động có thể được định thời gian theo bộ đếm thời gian và có thể đã thoát khỏi lần chạy thực thi cuối cùng.
    Mô tả : Một dòng văn bản có mục đích nhận dạng hoặc mô tả dịch vụ.

Màn hình chỉ bao gồm các dịch vụ đang hoạt động. Để xem tất cả các dịch vụ, chúng ta cần thêm tùy chọn --all.

Mã nguồn [Chọn]
systemctl list-units --all --type=service

Nếu việc xem mọi thứ khiến bạn cảm thấy quá tải thông tin, chúng ta có thể lọc đầu ra bằng tùy chọn --state.

Mã nguồn [Chọn]
systemctl list-units --type=service --state=running

Tùy chọn trạng thái sẽ chấp nhận chạy, dừng, bật, tắt và không thành công.

Để tập trung vào các dịch vụ bị lỗi, hãy sử dụng tùy chọn --failed.

Mã nguồn [Chọn]
systemctl list-units --failed

Không có bộ phận nào bị lỗi trên máy tính này.

Nếu bạn thấy bất kỳ dịch vụ nào bị lỗi, hãy sử dụng tùy chọn list-dependencies để kiểm tra xem có dịch vụ phụ thuộc nào chưa được đáp ứng hay không.

Mã nguồn [Chọn]
systemctl list-dependencies sshd.service

Các phụ thuộc có một vòng tròn mã màu biểu thị trạng thái của chúng. Nó có thể là:

    Vòng tròn trắng : Không hoạt động hoặc đang bảo trì
    Chấm xanh : Đang hoạt động.
    Chấm trắng : Đang hủy kích hoạt.
    Chấm đỏ : Không thành công hoặc có lỗi.

Để kiểm tra xem một dịch vụ duy nhất có được bật hay không, hãy sử dụng lệnh is-enabled và cung cấp tên tệp đơn vị của dịch vụ đó.

Mã nguồn [Chọn]
systemctl is-enabled htg-example.service

3. Kiểm soát dịch vụ với systemctl

Sử dụng systemctl để quản lý dịch vụ rất đơn giản và tuân theo định dạng của các lệnh mà chúng ta đã thấy cho đến nay. Sự khác biệt lớn nhất là bạn sẽ cần sử dụng sudo để thay đổi trạng thái của dịch vụ. Cho đến nay, chúng tôi chưa phải sử dụng nó vì chúng tôi chỉ báo cáo về trạng thái dịch vụ.

Để bắt đầu một dịch vụ, hãy sử dụng lệnh start theo sau là tên của dịch vụ.

Mã nguồn [Chọn]
sudo systemctl start htg-example.service

Nếu mọi việc diễn ra tốt đẹp, bạn sẽ được trả về dấu nhắc lệnh một cách âm thầm. Nếu bạn muốn có xác nhận tích cực, bạn có thể nhận xác minh từ lệnh trạng thái.

Mã nguồn [Chọn]
sudo systemctl status htg-example.service

Việc dừng một dịch vụ cũng đơn giản như việc bắt đầu một dịch vụ.

Mã nguồn [Chọn]
sudo systemctl stop htg-example.service

Bạn có thể khởi động lại dịch vụ mà không cần phải trải qua quy trình hai bước dừng thủ công rồi khởi động lại. Lệnh khởi động lại sẽ thực hiện tất cả cho bạn.

Mã nguồn [Chọn]
sudo systemctl restart htg-example.service

Nếu bạn muốn một dịch vụ nào đó khởi động cùng lúc, bạn cần phải kích hoạt dịch vụ đó.

Mã nguồn [Chọn]
sudo systemctl enable htg-example.service

Lưu ý rằng điều này chỉ đánh dấu dịch vụ để nó được bắt đầu khi khởi động, chứ không phải bắt đầu ngay lập tức. Nếu đó là điều bạn muốn, hãy thêm cờ --now.

Mã nguồn [Chọn]
sudo systemctl enable --now htg-example.service

Khi bạn không còn cần một dịch vụ nào đó khởi động cùng lúc, hãy tắt dịch vụ đó đi.

Mã nguồn [Chọn]
sudo systemctl disable htg-example.service

Bạn có thể sử dụng lệnh journalctl, một phần khác của systemd, để tìm kiếm các mục liên quan đến dịch vụ của bạn trong. Tùy chọn -u (đơn vị) cho phép bạn chỉ định dịch vụ mà bạn quan tâm. Với tùy chọn -S (kể từ), bạn có thể hiển thị các mục đã xảy ra kể từ thời điểm bạn cung cấp.

Mã nguồn [Chọn]
journalctl -S "08:00:00" -u htg-example.service

3. Bộ công cụ dịch vụ của bạn

Bất kỳ thứ gì giúp bạn hiểu sâu hơn về hoạt động bên trong của bản phân phối Linux của mình đều sẽ là một công cụ hữu ích, để quản lý hàng ngày và để khắc phục sự cố và chẩn đoán sự cố. Lệnh systemctl không phải là một công cụ duy nhất. Nó giống như một rương công cụ chứa các công cụ chuyên dụng và rất đáng để nắm bắt.