Chủ Nhật, 01/02/2015 | 00:00 GMT+7

Cách sử dụng Systemctl để quản lý các đơn vị và dịch vụ Systemd

systemd là một hệ thống init và trình quản lý hệ thống đã trở thành tiêu chuẩn mới cho các bản phân phối Linux. Do được áp dụng nhiều, việc làm quen với systemd rất đáng để bạn gặp rắc rối, vì nó sẽ giúp việc quản trị các server dễ dàng hơn đáng kể. Tìm hiểu và sử dụng các công cụ và daemon bao gồm systemd sẽ giúp bạn đánh giá cao hơn sức mạnh, tính linh hoạt và khả năng mà nó cung cấp, hoặc ít nhất là giúp bạn thực hiện công việc của bạn một cách đơn giản.

Trong hướng dẫn này, ta sẽ thảo luận về lệnh systemctl , là công cụ quản lý trung tâm để điều khiển hệ thống init. Ta sẽ trình bày cách quản lý dịch vụ, kiểm tra trạng thái, thay đổi trạng thái hệ thống và làm việc với các file cấu hình.

Xin lưu ý mặc dù systemd đã trở thành hệ thống init mặc định cho nhiều bản phân phối Linux, nó không được triển khai phổ biến trên tất cả các bản phân phối. Khi bạn xem qua hướng dẫn này, nếu terminal của bạn xuất ra lỗi bash: systemctl is not installed thì có khả năng máy của bạn đã cài đặt hệ thống init khác.

Quản lý dịch vụ

Mục đích cơ bản của hệ thống init là khởi tạo các thành phần phải được khởi động sau khi kernel Linux được khởi động (theo truyền thống được gọi là các thành phần “userland”). Hệ thống init cũng được sử dụng để quản lý các dịch vụ và daemon cho server tại bất kỳ thời điểm nào trong khi hệ thống đang chạy. Với ý nghĩ đó, ta sẽ bắt đầu với một số hoạt động quản lý dịch vụ cơ bản.

Trong systemd , mục tiêu của hầu hết các hành động là “đơn vị”, là những tài nguyên mà systemd biết cách quản lý. Các đơn vị được phân loại theo loại tài nguyên mà chúng đại diện và chúng được định nghĩa với các file được gọi là file đơn vị. Loại của mỗi đơn vị có thể được suy ra từ hậu tố ở cuối file .

Đối với các việc quản lý dịch vụ, đơn vị mục tiêu sẽ là các đơn vị dịch vụ, có các file đơn vị có hậu tố là .service . Tuy nhiên, đối với hầu hết các lệnh quản lý dịch vụ, bạn có thể bỏ đi hậu tố .service , vì systemd đủ thông minh để biết rằng bạn có thể cần hoạt động trên một dịch vụ khi sử dụng các lệnh quản lý dịch vụ.

Dịch vụ Bắt đầu và Dừng

Để bắt đầu một dịch vụ systemd , thực hiện các hướng dẫn trong file đơn vị của dịch vụ, hãy sử dụng lệnh start . Nếu bạn đang chạy với quyền user không phải root, bạn sẽ phải sử dụng sudo vì điều này sẽ ảnh hưởng đến trạng thái của hệ điều hành:

  • sudo systemctl start application.service

Như ta đã đề cập ở trên, systemd biết tìm kiếm các file *.service cho các lệnh quản lý dịch vụ, vì vậy lệnh có thể dễ dàng được nhập như sau:

  • sudo systemctl start application

Mặc dù bạn có thể sử dụng định dạng trên để quản trị chung, nhưng để rõ ràng, ta sẽ sử dụng hậu tố .service cho phần còn lại của các lệnh, để nói rõ về mục tiêu mà ta đang hoạt động.

Để dừng một dịch vụ hiện đang chạy, bạn có thể sử dụng lệnh stop thay thế:

  • sudo systemctl stop application.service

Khởi động lại và reload

Để khởi động lại một dịch vụ đang chạy, bạn có thể sử dụng lệnh restart :

  • sudo systemctl restart application.service

Nếu ứng dụng được đề cập có thể reload các file cấu hình của nó (mà không cần khởi động lại), bạn có thể ra lệnh reload để bắt đầu quá trình đó:

  • sudo systemctl reload application.service

Nếu bạn không chắc liệu dịch vụ có chức năng reload cấu hình của nó hay không, bạn có thể ra lệnh reload-or-restart . Thao tác này sẽ reload cấu hình tại chỗ nếu có. Nếu không, nó sẽ khởi động lại dịch vụ để cấu hình mới được chọn:

  • sudo systemctl reload-or-restart application.service

Bật và tắt dịch vụ

Các lệnh trên rất hữu ích để bắt đầu hoặc dừng các dịch vụ trong phiên hiện tại. Để yêu cầu systemd tự động khởi động các dịch vụ khi khởi động, bạn phải kích hoạt chúng.

Để khởi động một dịch vụ khi khởi động, hãy sử dụng lệnh enable :

  • sudo systemctl enable application.service

Thao tác này sẽ tạo một softlink từ bản sao của hệ thống của file dịch vụ (thường trong /lib/systemd/system hoặc /etc/systemd/system ) vào vị trí trên đĩa nơi systemd tìm kiếm các file tự khởi động (thường là /etc/systemd/system/ some_target .target.wants . Ta sẽ xem xét mục tiêu là gì sau trong hướng dẫn này).

Để tắt dịch vụ tự động khởi động, có thể chạy lệnh:

  • sudo systemctl disable application.service

Thao tác này sẽ xóa softlink cho biết rằng dịch vụ sẽ được khởi động tự động.

Lưu ý việc bật dịch vụ sẽ không khởi động dịch vụ đó trong phiên hiện tại. Nếu bạn muốn khởi động dịch vụ và cũng kích hoạt nó khi khởi động, bạn sẽ phải đưa ra cả lệnh startenable .

Kiểm tra Trạng thái Dịch vụ

Để kiểm tra trạng thái của một dịch vụ trên hệ thống của bạn, bạn có thể sử dụng lệnh status :

  • systemctl status application.service

Điều này sẽ cung cấp cho bạn trạng thái dịch vụ, phân cấp cgroup và một vài dòng log đầu tiên.

Ví dụ: khi kiểm tra trạng thái của server Nginx, bạn có thể thấy kết quả như sau:

Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2015-01-27 19:41:23 EST; 22h ago Main PID: 495 (nginx) CGroup: /system.slice/nginx.service ├─495 nginx: master process /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr; └─496 nginx: worker process Jan 27 19:41:23 desktop systemd[1]: Starting A high performance web server and a reverse proxy server... Jan 27 19:41:23 desktop systemd[1]: Started A high performance web server and a reverse proxy server.

Điều này cung cấp cho bạn một cái nhìn tổng quan tốt đẹp về tình trạng hiện tại của ứng dụng, thông báo cho bạn về bất kỳ vấn đề nào và bất kỳ hành động nào có thể được yêu cầu.

Ngoài ra còn có các phương pháp để kiểm tra các trạng thái cụ thể. Ví dụ: để kiểm tra xem một đơn vị hiện đang hoạt động (đang chạy) hay không, bạn có thể sử dụng lệnh is-active :

  • systemctl is-active application.service

Thao tác này sẽ trả về trạng thái đơn vị hiện tại, thường là active hoặc inactive . Mã thoát sẽ là “0” nếu nó đang hoạt động, làm cho kết quả đơn giản hơn để phân tích cú pháp trong các tập lệnh shell.

Để xem đơn vị đã được bật chưa, bạn có thể sử dụng lệnh is-enabled :

  • systemctl is-enabled application.service

Điều này sẽ xuất ra liệu dịch vụ được enabled hay disabled và sẽ đặt lại mã thoát thành “0” hoặc “1” tùy thuộc vào câu trả lời cho câu hỏi lệnh.

Lần kiểm tra thứ ba là thiết bị có ở trạng thái không hoạt động hay không. Điều này cho thấy rằng đã xảy ra sự cố khi khởi động thiết bị được đề cập:

  • systemctl is-failed application.service

Điều này sẽ active trở lại nếu nó đang chạy đúng cách hoặc failed nếu xảy ra lỗi. Nếu thiết bị cố ý dừng lại, thiết bị có thể trả về unknown hoặc inactive . Trạng thái thoát “0” cho biết rằng đã xảy ra lỗi và trạng thái thoát “1” cho biết bất kỳ trạng thái nào khác.

Tổng quan về trạng thái hệ thống

Các lệnh cho đến nay rất hữu ích để quản lý các dịch vụ đơn lẻ, nhưng chúng không hữu ích lắm cho việc khám phá trạng thái hiện tại của hệ thống. Có một số lệnh systemctl cung cấp thông tin này.

Liệt kê các đơn vị hiện tại

Để xem danh sách tất cả các đơn vị đang hoạt động mà systemd biết, ta có thể sử dụng lệnh list-units :

  • systemctl list-units

Thao tác này sẽ hiển thị cho bạn danh sách tất cả các đơn vị systemd hiện đang hoạt động trên hệ thống. Đầu ra sẽ giống như sau:

Output
UNIT LOAD ACTIVE SUB DESCRIPTION atd.service loaded active running ATD daemon avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack dbus.service loaded active running D-Bus System Message Bus dcron.service loaded active running Periodic Command Scheduler dkms.service loaded active exited Dynamic Kernel Modules System getty@tty1.service loaded active running Getty on tty1 . . .

Đầu ra có các cột sau:

  • UNIT : Tên đơn vị systemd
  • TẢI : Liệu cấu hình của thiết bị đã được phân tích cú pháp bởi systemd . Cấu hình của các đơn vị đã tải được lưu trong bộ nhớ.
  • ACTIVE : Trạng thái tóm tắt về việc thiết bị có đang hoạt động hay không. Đây thường là một cách khá cơ bản để biết đơn vị đã khởi động thành công hay chưa.
  • SUB : Đây là trạng thái cấp thấp hơn cho biết thông tin chi tiết hơn về đơn vị. Điều này thường thay đổi theo loại thiết bị, trạng thái và phương pháp thực tế mà thiết bị chạy.
  • MÔ TẢ : Một đoạn văn bản mô tả ngắn về những gì đơn vị đang / làm.

Vì lệnh list-units theo mặc định chỉ hiển thị các đơn vị đang hoạt động, tất cả các mục ở trên sẽ hiển thị được loaded trong cột LOAD và hiện active trong cột ACTIVE. Màn hình này thực sự là hành vi mặc định của systemctl khi được gọi mà không có lệnh bổ sung, vì vậy bạn sẽ thấy điều tương tự nếu bạn gọi systemctl không có đối số:

  • systemctl

Ta có thể systemctl xuất ra các thông tin khác nhau bằng cách thêm các cờ bổ sung. Ví dụ: để xem tất cả các đơn vị mà systemd đã tải (hoặc cố tải), dù chúng hiện đang hoạt động hay không, bạn có thể sử dụng cờ --all , như sau:

  • systemctl list-units --all

Điều này sẽ hiển thị bất kỳ đơn vị nào mà systemd đã tải hoặc cố gắng tải, dù trạng thái hiện tại của nó trên hệ thống. Một số đơn vị trở nên không hoạt động sau khi chạy và một số đơn vị mà systemd đã cố gắng tải có thể không được tìm thấy trên đĩa.

Bạn có thể sử dụng các cờ khác để lọc các kết quả này. Ví dụ, ta có thể sử dụng cờ --state= để chỉ ra các trạng thái TẢI, HOẠT ĐỘNG hoặc SUB mà ta muốn xem. Bạn sẽ phải giữ cờ --all để systemctl cho phép các đơn vị không hoạt động được hiển thị:

  • systemctl list-units --all --state=inactive

Một bộ lọc phổ biến khác là --type= filter. Ta có thể systemctl chỉ hiển thị các đơn vị thuộc loại mà ta quan tâm. Ví dụ: để chỉ xem các đơn vị dịch vụ đang hoạt động, ta có thể sử dụng:

  • systemctl list-units --type=service

Liệt kê tất cả các file đơn vị

Lệnh list-units chỉ hiển thị các đơn vị mà systemd đã cố gắng phân tích cú pháp và tải vào bộ nhớ. Vì systemd sẽ chỉ đọc các đơn vị mà nó nghĩ rằng nó cần, điều này không nhất thiết sẽ bao gồm tất cả các đơn vị có sẵn trên hệ thống. Để xem mọi file đơn vị có sẵn trong đường dẫn systemd , bao gồm cả những file mà systemd chưa cố tải, bạn có thể sử dụng lệnh list-unit-files để thay thế:

  • systemctl list-unit-files

Đơn vị là đại diện của tài nguyên mà systemd biết về. Vì systemd không nhất thiết phải đọc tất cả các định nghĩa đơn vị trong dạng xem này, nó chỉ trình bày thông tin về chính các file . Đầu ra có hai cột: file đơn vị và trạng thái.

Output
UNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hugepages.mount static dev-mqueue.mount static proc-fs-nfsd.mount static proc-sys-fs-binfmt_misc.mount static sys-fs-fuse-connections.mount static sys-kernel-config.mount static sys-kernel-debug.mount static tmp.mount static var-lib-nfs-rpc_pipefs.mount static org.cups.cupsd.path enabled . . .

Trạng thái thường sẽ được enabled , disabled , static hoặc masked . Trong ngữ cảnh này, tĩnh nghĩa là file đơn vị không chứa phần install , được sử dụng để kích hoạt một đơn vị. Do đó, các đơn vị này không thể được kích hoạt. Thông thường, điều này nghĩa là đơn vị thực hiện một hành động một lần hoặc chỉ được sử dụng như một phần phụ thuộc của một đơn vị khác và không nên được điều hành bởi chính nó.

Ta sẽ trình bày ý nghĩa của masked trong giây lát.

Quản lý đơn vị

Lúc này, ta đang làm việc với các dịch vụ và hiển thị thông tin về đơn vị và file đơn vị mà systemd biết. Tuy nhiên, ta có thể tìm hiểu thêm thông tin cụ thể về các đơn vị bằng cách sử dụng một số lệnh bổ sung.

Hiển thị một file đơn vị

Để hiển thị file đơn vị mà systemd đã tải vào hệ thống của nó, bạn có thể sử dụng lệnh cat (lệnh này đã được thêm vào version systemd 209). Ví dụ, để xem file đơn vị của daemon lập lịch biểu atd , ta có thể nhập:

  • systemctl cat atd.service
Output
[Unit] Description=ATD daemon [Service] Type=forking ExecStart=/usr/bin/atd [Install] WantedBy=multi-user.target

Đầu ra là file đơn vị được biết đến với quy trình systemd hiện đang chạy. Điều này có thể quan trọng nếu bạn đã sửa đổi các file đơn vị gần đây hoặc nếu bạn đang overrides các tùy chọn nhất định trong một phân đoạn file đơn vị ( ta sẽ đề cập đến vấn đề này sau).

Hiển thị dependencies

Để xem cây phụ thuộc của một đơn vị, bạn có thể sử dụng lệnh list-dependencies :

  • systemctl list-dependencies sshd.service

Điều này sẽ hiển thị một cấu trúc phân cấp ánh xạ các phần phụ thuộc phải được xử lý để bắt đầu đơn vị được đề cập. Trong ngữ cảnh này, dependencies bao gồm những đơn vị được yêu cầu hoặc mong muốn bởi các đơn vị phía trên nó.

Output
sshd.service ├─system.slice └─basic.target ├─microcode.service ├─rhel-autorelabel-mark.service ├─rhel-autorelabel.service ├─rhel-configure.service ├─rhel-dmesg.service ├─rhel-loadmodules.service ├─paths.target ├─slices.target . . .

Các phụ thuộc đệ quy chỉ được hiển thị cho các đơn vị .target , biểu thị trạng thái hệ thống. Để liệt kê đệ quy tất cả các phụ thuộc, hãy bao gồm cờ --all .

Để hiển thị các phụ thuộc ngược lại (các đơn vị phụ thuộc vào đơn vị được chỉ định), bạn có thể thêm cờ --reverse vào lệnh. Cờ khác mà có ích là --before--after cờ, được dùng để hiển thị các đơn vị phụ thuộc vào các đơn vị cụ thể bắt đầu trước và sau khi bản thân, tương ứng.

Kiểm tra thuộc tính đơn vị

Để xem các thuộc tính cấp thấp của một đơn vị, bạn có thể sử dụng lệnh show . Thao tác này sẽ hiển thị danh sách các thuộc tính được đặt cho đơn vị được chỉ định sử dụng định dạng key=value :

  • systemctl show sshd.service
Output
Id=sshd.service Names=sshd.service Requires=basic.target Wants=system.slice WantedBy=multi-user.target Conflicts=shutdown.target Before=shutdown.target multi-user.target After=syslog.target network.target auditd.service systemd-journald.socket basic.target system.slice Description=OpenSSH server daemon . . .

Nếu bạn muốn hiển thị một thuộc tính duy nhất, bạn có thể chuyển cờ -p với tên thuộc tính. Ví dụ: để xem các xung đột mà đơn vị sshd.service có, có thể chạy lệnh:

  • systemctl show sshd.service -p Conflicts
Output
Conflicts=shutdown.target

Các đơn vị tạo mặt nạ và làm lộ mặt

Ta đã thấy trong phần quản lý dịch vụ cách dừng hoặc vô hiệu hóa một dịch vụ, nhưng systemd cũng có khả năng đánh dấu một đơn vị là hoàn toàn không thể khởi động, tự động hoặc thủ công, bằng cách liên kết nó với /dev/null . Điều này được gọi là tạo mặt nạ cho đơn vị và có thể thực hiện được với lệnh mask :

  • sudo systemctl mask nginx.service

Điều này sẽ ngăn không cho dịch vụ Nginx khởi động, tự động hoặc thủ công, miễn là nó bị che.

Nếu bạn kiểm tra list-unit-files , bạn sẽ thấy dịch vụ hiện được liệt kê là bị che:

  • systemctl list-unit-files
Output
. . . kmod-static-nodes.service static ldconfig.service static mandb.service static messagebus.service static nginx.service masked quotaon.service static rc-local.service static rdisc.service disabled rescue.service static . . .

Nếu bạn cố gắng khởi động dịch vụ, bạn sẽ thấy một thông báo như sau:

  • sudo systemctl start nginx.service
Output
Failed to start nginx.service: Unit nginx.service is masked.

Để hiển thị một đơn vị, làm cho nó có sẵn để sử dụng lại, hãy sử dụng lệnh unmask :

  • sudo systemctl unmask nginx.service

Thao tác này sẽ đưa thiết bị về trạng thái trước đó, cho phép khởi động hoặc kích hoạt thiết bị.

Chỉnh sửa file đơn vị

Mặc dù định dạng cụ thể cho các file đơn vị nằm ngoài phạm vi của hướng dẫn này, systemctl cung cấp các cơ chế tích hợp để chỉnh sửa và sửa đổi file đơn vị nếu bạn cần thực hiện điều chỉnh. Chức năng này đã được thêm vào version systemd 218.

Theo mặc định, lệnh edit sẽ mở một đoạn mã file đơn vị cho đơn vị được đề cập:

  • sudo systemctl edit nginx.service

Đây sẽ là một file trống được dùng để overrides hoặc thêm chỉ thị vào định nghĩa đơn vị. Một folder sẽ được tạo trong folder /etc/systemd/system chứa tên của đơn vị có gắn thêm .d . Ví dụ, đối với nginx.service , một folder có tên nginx.service.d sẽ được tạo.

Trong folder này, một đoạn mã sẽ được tạo có tên override.conf . Khi đơn vị được tải, systemd , trong bộ nhớ, sẽ hợp nhất đoạn mã overrides với file đơn vị đầy đủ. Các lệnh của đoạn mã sẽ được ưu tiên hơn các lệnh được tìm thấy trong file đơn vị root .

Nếu bạn muốn chỉnh sửa file đơn vị đầy đủ thay vì tạo đoạn mã, bạn có thể chuyển cờ --full :

  • sudo systemctl edit --full nginx.service

Thao tác này sẽ tải file đơn vị hiện tại vào editor , nơi nó có thể được sửa đổi. Khi editor thoát ra, file đã thay đổi sẽ được ghi vào /etc/systemd/system , sẽ được ưu tiên hơn định nghĩa đơn vị của hệ thống (thường được tìm thấy ở đâu đó trong /lib/systemd/system ).

Để xóa bất kỳ bổ sung nào bạn đã thực hiện, hãy xóa folder cấu hình .d của đơn vị hoặc file dịch vụ đã sửa đổi khỏi /etc/systemd/system . Ví dụ: để xóa một đoạn mã, ta có thể nhập:

  • sudo rm -r /etc/systemd/system/nginx.service.d

Để xóa toàn bộ file đơn vị đã được sửa đổi, ta sẽ nhập:

  • sudo rm /etc/systemd/system/nginx.service

Sau khi xóa file hoặc folder , bạn nên reload quy trình systemd để nó không còn cố gắng tham chiếu các file này nữa và trở lại sử dụng các bản sao hệ thống. Bạn có thể thực hiện việc này bằng lệnh :

  • sudo systemctl daemon-reload

Điều chỉnh trạng thái hệ thống (Runlevel) bằng các mục tiêu

Mục tiêu là các file đơn vị đặc biệt mô tả trạng thái hệ thống hoặc điểm đồng bộ hóa. Giống như các đơn vị khác, các file xác định mục tiêu có thể được xác định bằng hậu tố của chúng, trong trường hợp này là .target . Các mục tiêu không tự làm được gì nhiều mà thay vào đó được sử dụng để group các đơn vị khác lại với nhau.

Điều này được dùng để đưa hệ thống đến một số trạng thái nhất định, giống như các hệ thống init khác sử dụng runlevel. Chúng được sử dụng như một tham chiếu khi một số chức năng có sẵn, cho phép bạn chỉ định trạng thái mong muốn thay vì các đơn vị riêng lẻ cần thiết để tạo ra trạng thái đó.

Ví dụ: có một swap.target được sử dụng để cho biết rằng swap đã sẵn sàng để sử dụng. Các đơn vị là một phần của quá trình này có thể đồng bộ hóa với mục tiêu này bằng cách chỉ ra trong cấu hình của chúng rằng chúng là WantedBy= hoặc RequiredBy= the swap.target . Các đơn vị yêu cầu swap khả dụng có thể chỉ định điều kiện này bằng cách sử dụng các thông số kỹ thuật Wants= , Requires=After= để chỉ ra bản chất của mối quan hệ của chúng.

Lấy và đặt mục tiêu mặc định

Quá trình systemd có một mục tiêu mặc định mà nó sử dụng khi khởi động hệ thống. Việc thỏa mãn các tầng phụ thuộc từ mục tiêu duy nhất đó sẽ đưa hệ thống vào trạng thái mong muốn. Để tìm mục tiêu mặc định cho hệ thống của bạn, hãy nhập:

  • systemctl get-default
Output
multi-user.target

Nếu bạn muốn đặt một mục tiêu mặc định khác, bạn có thể sử dụng set-default . Ví dụ: nếu bạn đã cài đặt một màn hình đồ họa và bạn muốn hệ thống khởi động vào đó theo mặc định, bạn có thể thay đổi mục tiêu mặc định của bạn cho phù hợp:

  • sudo systemctl set-default graphical.target

Liệt kê các Mục tiêu Có sẵn

Bạn có thể nhận được danh sách các mục tiêu có sẵn trên hệ thống của bạn bằng lệnh :

  • systemctl list-unit-files --type=target

Không giống như runlevels, nhiều mục tiêu có thể hoạt động cùng một lúc. Một mục tiêu đang hoạt động cho biết systemd đã cố gắng khởi động tất cả các đơn vị được gắn với mục tiêu và không cố gắng phá hủy chúng . Để xem tất cả các mục tiêu đang hoạt động, hãy nhập:

  • systemctl list-units --type=target

Cô lập các mục tiêu

Có thể bắt đầu tất cả các đơn vị được liên kết với một mục tiêu và dừng tất cả các đơn vị không phải là một phần của cây phụ thuộc. Lệnh mà ta cần làm điều này được gọi, một cách thích hợp, isolate . Điều này tương tự như việc thay đổi runlevel trong các hệ thống init khác.

Ví dụ: nếu bạn đang hoạt động trong môi trường graphical.target hoạt động graphical.target , bạn có thể tắt hệ thống đồ họa và đưa hệ thống vào trạng thái dòng lệnh nhiều user bằng cách cô lập multi-user.target . Vì graphical.target phụ thuộc vào multi-user.target chứ không phải ngược lại, tất cả các đơn vị đồ họa sẽ bị dừng lại.

Bạn có thể cần xem xét các yếu tố phụ thuộc của mục tiêu mà bạn đang phân lập trước khi thực hiện quy trình này đảm bảo rằng bạn không ngừng các dịch vụ quan trọng:

  • systemctl list-dependencies multi-user.target

Khi thấy ổn với các đơn vị sẽ còn sống, bạn có thể cô lập mục tiêu bằng lệnh :

  • sudo systemctl isolate multi-user.target

Sử dụng phím tắt cho các sự kiện quan trọng

Có các mục tiêu được xác định cho các sự kiện quan trọng như tắt nguồn hoặc khởi động lại. Tuy nhiên, systemctl cũng có một số phím tắt bổ sung một chút chức năng bổ sung.

Ví dụ, để đặt hệ thống vào chế độ cứu hộ (một user ), bạn chỉ có thể sử dụng lệnh rescue thay vì isolate rescue.target rescue .

  • sudo systemctl rescue

Điều này sẽ cung cấp thêm chức năng cảnh báo cho tất cả user đã đăng nhập về sự kiện này.

Để tạm dừng hệ thống, bạn có thể sử dụng lệnh halt :

  • sudo systemctl halt

Để bắt đầu tắt hoàn toàn, bạn có thể sử dụng lệnh poweroff :

  • sudo systemctl poweroff

reboot lại có thể được bắt đầu bằng lệnh reboot :

  • sudo systemctl reboot

Tất cả những cảnh báo này cho user đã đăng nhập rằng sự kiện đang xảy ra, điều gì đó chỉ chạy hoặc cô lập mục tiêu sẽ không thực hiện. Lưu ý hầu hết các máy sẽ liên kết các lệnh ngắn hơn, thông thường hơn cho các hoạt động này để chúng hoạt động bình thường với systemd .

Ví dụ, để khởi động lại hệ thống, bạn thường có thể nhập:

  • sudo reboot

Kết luận

Bây giờ, bạn đã quen với một số khả năng cơ bản của lệnh systemctl cho phép bạn tương tác và kiểm soát version systemd của bạn . Tiện ích systemctl sẽ là điểm tương tác chính của bạn để quản lý trạng thái hệ thống và dịch vụ.

Trong khi systemctl hoạt động chủ yếu với quy trình systemd cốt lõi, có những thành phần khác của systemd sinh thái systemd được kiểm soát bởi các tiện ích khác. Các khả năng khác, chẳng hạn như quản lý log và phiên user được xử lý bởi các trình duyệt và tiện ích quản lý riêng biệt (tương ứng là journald / journalctllogind / loginctl ). Dành thời gian để làm quen với các công cụ và daemon khác này sẽ giúp việc quản lý trở nên dễ dàng hơn.


Tags:

Các tin liên quan