Giới thiệu
Trong lab này, bạn sẽ học cách sử dụng lệnh systemctl
, công cụ chính để quản lý các dịch vụ hệ thống trong Linux. Bạn sẽ hiểu mục đích và chức năng của systemctl
, học cách quản lý các dịch vụ hệ thống bằng nhiều lệnh systemctl
khác nhau, và cấu hình khởi động dịch vụ tự động. Lab này bao gồm các khía cạnh thiết yếu của quản lý dịch vụ, bao gồm khởi động, dừng, kích hoạt và vô hiệu hóa dịch vụ, cũng như xem trạng thái và nhật ký của chúng. Lab này được thiết kế để cung cấp cho bạn kinh nghiệm thực tế trong cấu hình hệ thống và các thiết lập bằng cách sử dụng lệnh systemctl
mạnh mẽ.
Hiểu Mục Đích và Chức Năng của systemctl
Trong bước này, bạn sẽ tìm hiểu về mục đích và chức năng của lệnh systemctl
, đây là công cụ chính để quản lý các dịch vụ hệ thống trong Linux.
Lệnh systemctl
là một phần của hệ thống init systemd, là hệ thống init mặc định được sử dụng bởi nhiều bản phân phối Linux hiện đại, bao gồm Ubuntu 22.04. Systemd cung cấp một cách thống nhất để quản lý các dịch vụ hệ thống, cho phép bạn khởi động, dừng, kích hoạt và vô hiệu hóa các dịch vụ, cũng như xem trạng thái và nhật ký của chúng.
Hãy bắt đầu bằng cách khám phá cách sử dụng cơ bản của systemctl
:
## Liệt kê tất cả các dịch vụ đang chạy
sudo systemctl list-units --type=service
## Ví dụ đầu ra:
## UNIT LOAD ACTIVE SUB DESCRIPTION
## accounts-daemon.service loaded active running Accounts Service
## acpid.service loaded active running ACPI event daemon
## apparmor.service loaded active exited AppArmor initialization
## ...
Lệnh này liệt kê tất cả các dịch vụ đang chạy trên hệ thống. Bạn có thể thấy tên dịch vụ, trạng thái load, active và sub của chúng, cũng như mô tả ngắn gọn về từng dịch vụ.
Để xem trạng thái của một dịch vụ cụ thể, bạn có thể sử dụng subcommand status
:
## Kiểm tra trạng thái của dịch vụ sshd
sudo systemctl status sshd.service
## Ví dụ đầu ra:
## ● sshd.service - OpenSSH server daemon
## Loaded: loaded (/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
## Active: active (running) since Fri 2023-04-28 12:34:56 UTC; 1 day 2h ago
## Docs: man:sshd(8)
## man:sshd_config(5)
## Main PID: 12345 (sshd)
## Tasks: 1 (limit: 4915)
## Memory: 12.8M
## CGroup: /system.slice/sshd.service
## └─12345 /usr/sbin/sshd -D
Đầu ra này cung cấp thông tin chi tiết về dịch vụ sshd
, bao gồm trạng thái hiện tại của nó, thời điểm nó được khởi động và ID tiến trình của dịch vụ đang chạy.
Bạn cũng có thể sử dụng systemctl
để khởi động, dừng hoặc khởi động lại một dịch vụ:
## Khởi động dịch vụ sshd
sudo systemctl start sshd.service
## Dừng dịch vụ sshd
sudo systemctl stop sshd.service
## Khởi động lại dịch vụ sshd
sudo systemctl restart sshd.service
Các lệnh này cho phép bạn kiểm soát vòng đời của các dịch vụ hệ thống.
Trong bước tiếp theo, bạn sẽ học cách sử dụng các lệnh systemctl
bổ sung để quản lý các dịch vụ hệ thống.
Quản Lý Dịch Vụ Hệ Thống Bằng Lệnh systemctl
Trong bước này, bạn sẽ học cách sử dụng các lệnh systemctl
khác nhau để quản lý các dịch vụ hệ thống.
Hãy bắt đầu bằng cách kích hoạt một dịch vụ để tự động khởi động khi hệ thống khởi động:
## Bật dịch vụ sshd để tự động khởi động khi khởi động
sudo systemctl enable sshd.service
## Ví dụ đầu ra:
## Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /lib/systemd/system/sshd.service.
Lệnh này tạo một liên kết tượng trưng đến tệp đơn vị dịch vụ, đảm bảo rằng dịch vụ sshd
sẽ tự động khởi động khi hệ thống khởi động.
Để tắt một dịch vụ không cho khởi động tự động, bạn có thể sử dụng subcommand disable
:
## Tắt dịch vụ sshd không cho tự động khởi động khi khởi động
sudo systemctl disable sshd.service
## Ví dụ đầu ra:
## Removed /etc/systemd/system/multi-user.target.wants/sshd.service.
Bây giờ, hãy khởi động và dừng dịch vụ theo cách thủ công:
## Khởi động dịch vụ sshd
sudo systemctl start sshd.service
## Dừng dịch vụ sshd
sudo systemctl stop sshd.service
Các lệnh này cho phép bạn kiểm soát trạng thái chạy của dịch vụ sshd
.
Nếu bạn cần khởi động lại một dịch vụ, bạn có thể sử dụng subcommand restart
:
## Khởi động lại dịch vụ sshd
sudo systemctl restart sshd.service
Lệnh này sẽ dừng dịch vụ trước và sau đó khởi động lại.
Cuối cùng, bạn có thể kiểm tra trạng thái của một dịch vụ bằng lệnh status
:
## Kiểm tra trạng thái của dịch vụ sshd
sudo systemctl status sshd.service
Lệnh này sẽ hiển thị trạng thái hiện tại của dịch vụ sshd
, bao gồm việc nó có đang chạy hay không, thời điểm nó được khởi động và bất kỳ thông báo lỗi nào.
Trong bước tiếp theo, bạn sẽ học cách cấu hình khởi động dịch vụ tự động với systemctl
.
Cấu Hình Khởi Động Dịch Vụ Tự Động với systemctl
Trong bước cuối cùng này, bạn sẽ học cách cấu hình khởi động dịch vụ tự động với systemctl
.
Systemd cung cấp một cách mạnh mẽ để quản lý việc khởi động và các phụ thuộc của dịch vụ. Bạn có thể cấu hình các dịch vụ để tự động khởi động khi hệ thống khởi động, hoặc để khởi động và dừng dựa trên trạng thái của các dịch vụ khác.
Hãy bắt đầu bằng cách tạo một tệp đơn vị dịch vụ đơn giản. Tạo một tệp mới có tên myservice.service
trong thư mục ~/project
:
sudo nano ~/project/myservice.service
Thêm nội dung sau vào tệp:
[Unit]
Description=My Custom Service
After=network.target
[Service]
ExecStart=/bin/bash -c "while true; do echo 'Running my service'; sleep 10; done"
Restart=always
[Install]
WantedBy=multi-user.target
Tệp đơn vị dịch vụ này định nghĩa một dịch vụ đơn giản chạy một vòng lặp vô hạn, in một thông báo sau mỗi 10 giây. Dòng After=network.target
đảm bảo rằng dịch vụ bắt đầu sau khi mạng khả dụng và dòng Restart=always
đảm bảo rằng dịch vụ sẽ tự động khởi động lại nếu nó dừng lại.
Bây giờ, hãy bật và khởi động dịch vụ:
## Bật myservice.service để tự động khởi động khi khởi động
sudo systemctl enable ~/project/myservice.service
## Khởi động myservice.service
sudo systemctl start myservice.service
Bạn có thể kiểm tra trạng thái của dịch vụ bằng lệnh systemctl status
:
sudo systemctl status myservice.service
## Ví dụ đầu ra:
## ● myservice.service - My Custom Service
## Loaded: loaded (/home/labex/project/myservice.service; enabled; vendor preset: enabled)
## Active: active (running) since Fri 2023-04-28 12:34:56 UTC; 1 minutes ago
## Main PID: 12345 (bash)
## Tasks: 2 (limit: 4915)
## Memory: 2.0M
## CGroup: /system.slice/myservice.service
## ├─12345 /bin/bash -c while true; do echo 'Running my service'; sleep 10; done
## └─12346 sleep 10
Điều này cho thấy rằng myservice.service
đang chạy và đã được bật để tự động khởi động khi hệ thống khởi động.
Bây giờ bạn đã học cách cấu hình khởi động dịch vụ tự động với systemctl
. Xin chúc mừng bạn đã hoàn thành lab này!
Tóm tắt
Trong lab này, trước tiên bạn đã tìm hiểu về mục đích và chức năng của lệnh systemctl
, là công cụ chính để quản lý các dịch vụ hệ thống trong Linux. Bạn đã khám phá cách liệt kê tất cả các dịch vụ đang chạy, kiểm tra trạng thái của một dịch vụ cụ thể và hiểu thông tin chi tiết được cung cấp về từng dịch vụ. Tiếp theo, bạn đã học cách quản lý các dịch vụ hệ thống bằng nhiều lệnh systemctl
khác nhau, chẳng hạn như khởi động, dừng, khởi động lại và kích hoạt các dịch vụ. Cuối cùng, bạn đã khám phá cách định cấu hình khởi động dịch vụ tự động với systemctl
, đảm bảo rằng các dịch vụ thiết yếu được khởi chạy khi hệ thống khởi động.