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.