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

systemdlà cách mới để chạy các dịch vụ trên Linux. systemd có một sysvinit siêu bắt buộc . systemd mang lại thời gian khởi động nhanh hơn cho Linux và hiện là một cách tiêu chuẩn để quản lý các dịch vụ Linux. Trong khi ổn định, systemd vẫn đang phát triển.

systemd như một hệ thống init, được sử dụng để quản lý cả dịch vụ và daemon cần thay đổi trạng thái sau khi hạt nhân Linux đã được khởi động. Bằng cách thay đổi trạng thái bắt đầu, dừng, tải lại và điều chỉnh trạng thái dịch vụ được áp dụng.

Đầu tiên, hãy kiểm tra phiên bản systemd hiện đang chạy trên máy chủ của chúng tôi.

[centos@localhost ~]$ systemctl --version 
systemd 219 
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP 
+GCRYPT +GNUTLS +ACL     +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

[centos@localhost ~]$

Kể từ phiên bản CentOS 7, được cập nhật đầy đủ tại thời điểm viết bài này, phiên bản systemd 219 là phiên bản ổn định hiện tại.

Chúng tôi cũng có thể phân tích thời gian khởi động máy chủ cuối cùng với systemd-analysis

[centos@localhost ~]$ systemd-analyze    
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s 
[centos@localhost ~]$

Khi thời gian khởi động hệ thống chậm hơn, chúng ta có thể sử dụng lệnh đổ lỗi systemd-analysis .

[centos@localhost ~]$ systemd-analyze blame 
   40.882s kdump.service 
   5.775s NetworkManager-wait-online.service 
   4.701s plymouth-quit-wait.service 
   3.586s postfix.service 
   3.121s systemd-udev-settle.service 
   2.649s tuned.service 
   1.848s libvirtd.service 
   1.437s network.service 
   875ms packagekit.service 
   855ms gdm.service 
   514ms firewalld.service 
   438ms rsyslog.service
   436ms udisks2.service 
   398ms sshd.service 
   360ms boot.mount 
   336ms polkit.service 
   321ms accounts-daemon.service

Khi làm việc với systemd , điều quan trọng là phải hiểu khái niệm đơn vị .Unitshệ thống tài nguyên có biết cách diễn giải không. Các đơn vị được phân thành 12 loại như sau:

  • .service
  • .socket
  • .device
  • .mount
  • .automount
  • .swap
  • .target
  • .path
  • .timer
  • .snapshot
  • .slice
  • .scope

Phần lớn, chúng tôi sẽ làm việc với .service làm mục tiêu đơn vị. Chúng tôi khuyên bạn nên nghiên cứu thêm về các loại khác. Vì chỉ các đơn vị .service sẽ áp dụng cho việc khởi động và dừng các dịch vụ systemd .

Mỗi đơn vị được xác định trong một tệp nằm trong:

  • /lib/systemd/system - tệp đơn vị cơ sở

  • /etc/systemd/system - các tệp đơn vị đã sửa đổi bắt đầu tại thời điểm chạy

Quản lý dịch vụ với systemctl

Để làm việc với systemd , chúng ta cần làm quen với lệnh systemctl . Sau đây là các công tắc dòng lệnh phổ biến nhất cho systemctl .

Công tắc điện Hoạt động
-t Giá trị được phân tách bằng dấu phẩy của các loại đơn vị như dịch vụ hoặc ổ cắm
-a Hiển thị tất cả các đơn vị đã tải
--tiểu bang Hiển thị tất cả các đơn vị ở trạng thái xác định, hoặc: tải, phụ, hoạt động, không hoạt động, v.v.
-H Thực hiện hoạt động từ xa. Chỉ định Tên máy chủ hoặc máy chủ và người dùng được phân tách bằng @.

Cách sử dụng systemctl cơ bản

systemctl [operation]
example: systemctl --state [servicename.service]

Để xem nhanh tất cả các dịch vụ đang chạy trên hộp của chúng tôi.

[root@localhost rdc]# systemctl -t service 
UNIT                       LOAD     ACTIVE      SUB     DESCRIPTION

abrt-ccpp.service          loaded   active   exited     Install ABRT coredump   hook 
abrt-oops.service          loaded   active   running    ABRT kernel log watcher 
abrt-xorg.service          loaded   active   running    ABRT Xorg log watcher 
abrtd.service              loaded   active   running    ABRT Automated Bug  Reporting Tool 
accounts-daemon.service    loaded   active   running    Accounts Service 
alsa-state.service         loaded   active   running    Manage Sound Card State (restore and store) 
atd.service                loaded   active   running    Job spooling tools 
auditd.service             loaded   active   running    Security Auditing Service 
avahi-daemon.service       loaded   active   running    Avahi mDNS/DNS-SD Stack 
blk-availability.service   loaded   active   exited     Availability of block devices 
bluetooth.service          loaded   active   running    Bluetooth service 
chronyd.service            loaded   active   running    NTP client/server

Dừng dịch vụ

Trước tiên, hãy dừng dịch vụ bluetooth.

[root@localhost]# systemctl stop bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth      
bluetooth.service   loaded    inactive dead    Bluetooth service

[root@localhost]#

Như chúng ta có thể thấy, dịch vụ bluetooth hiện không hoạt động.

Để bắt đầu lại dịch vụ bluetooth.

[root@localhost]# systemctl start bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth 
bluetooth.service  loaded    active   running Bluetooth     service

[root@localhost]#

Note- Chúng tôi không chỉ định bluetooth.service, vì .service được ngụ ý. Đó là một thực tiễn tốt để nghĩ về loại đơn vị bổ sung dịch vụ mà chúng tôi đang xử lý. Vì vậy, kể từ đây, chúng tôi sẽ sử dụng phần mở rộng .service để làm rõ chúng tôi đang thực hiện các hoạt động của đơn vị dịch vụ.

Các hành động chính có thể được thực hiện trên một dịch vụ là:

Khởi đầu Bắt đầu dịch vụ
Dừng lại Dừng một dịch vụ
Nạp lại Tải lại cấu hình đang hoạt động của một dịch vụ khi dừng nó (như kill -HUP trong system v init)
Khởi động lại Bắt đầu, sau đó dừng một dịch vụ
Kích hoạt Bắt đầu một dịch vụ tại thời điểm khởi động
Vô hiệu hóa Dừng dịch vụ tự động bắt đầu vào thời gian chạy

Các hành động trên chủ yếu được sử dụng trong các trường hợp sau:

Khởi đầu Để đưa một dịch vụ đã được đặt ở trạng thái ngừng hoạt động.
Dừng lại Để tạm thời tắt một dịch vụ (ví dụ: khi một dịch vụ phải dừng để truy cập các tệp bị dịch vụ khóa, như khi nâng cấp dịch vụ)
Nạp lại Khi một tệp cấu hình đã được chỉnh sửa và chúng tôi muốn áp dụng các thay đổi mới trong khi không dừng dịch vụ.
Khởi động lại Trong trường hợp tương tự như tải lại, nhưng dịch vụ không hỗ trợ tải lại .
Kích hoạt Khi chúng ta muốn một dịch vụ bị vô hiệu hóa chạy lúc khởi động.
Vô hiệu hóa Được sử dụng chủ yếu khi có nhu cầu dừng một dịch vụ, nhưng nó bắt đầu khi khởi động.

Để kiểm tra trạng thái của một dịch vụ -

[root@localhost]# systemctl status network.service 
network.service - LSB: Bring up/down networking 
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) 
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago 
Docs: man:systemd-sysv-generator(8)

Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)

localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking... 
localhost.localdomain network[923]: Bringing up loopback interface:  [  OK  ] 
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.

[root@localhost]#

Cho chúng tôi thấy trạng thái hiện tại của dịch vụ mạng . Nếu chúng ta muốn xem tất cả các dịch vụ liên quan đến mạng, chúng ta có thể sử dụng -

[root@localhost]# systemctl --all -t service | grep -i network 
network.service                       loaded    active    exited    LSB: Bring up/ 
NetworkManager-wait-online.service    loaded    active    exited    Network Manager  
NetworkManager.service                loaded    active    running   Network Manager 
ntpd.service                          loaded    inactive  dead      Network Time  
rhel-import-state.service             loaded    active    exited    Import network      

[root@localhost]#

Đối với những người quen thuộc với sysinitphương pháp quản lý dịch vụ, điều quan trọng là phải thực hiện chuyển đổi sang systemd . systemd là cách mới để khởi động và dừng các dịch vụ daemon trong Linux.