Uruchom i zatrzymaj usługi Systemd
systemdto nowy sposób uruchamiania usług w systemie Linux. systemd ma zastąpiony sysvinit . systemd przyspiesza uruchamianie systemu Linux i jest obecnie standardowym sposobem zarządzania usługami systemu Linux. Systemd jest stabilny, ale wciąż ewoluuje.
systemd jako system init jest używany do zarządzania zarówno usługami, jak i demonami, które wymagają zmiany statusu po uruchomieniu jądra Linuksa. Po zmianie stanu następuje uruchomienie, zatrzymanie, ponowne załadowanie i dostosowanie stanu usługi.
Najpierw sprawdźmy wersję systemd aktualnie działającą na naszym serwerze.
[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 ~]$
Począwszy od wersji CentOS 7, w pełni zaktualizowana w momencie pisania tego tekstu wersja systemd 219 jest aktualną wersją stabilną.
Możemy również przeanalizować czas ostatniego uruchomienia serwera za pomocą systemd-analysis
[centos@localhost ~]$ systemd-analyze
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s
[centos@localhost ~]$
Gdy czasy rozruchu systemu są wolniejsze, możemy użyć polecenia systemd-analysis blame .
[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
Podczas pracy z systemd ważne jest zrozumienie pojęcia jednostek .Unitsto zasoby, które systemd umie interpretować. Jednostki są podzielone na 12 typów w następujący sposób -
- .service
- .socket
- .device
- .mount
- .automount
- .swap
- .target
- .path
- .timer
- .snapshot
- .slice
- .scope
W większości będziemy pracować z .service jako jednostkami docelowymi. Zaleca się dalsze badania nad innymi typami. Ponieważ tylko jednostki .service będą miały zastosowanie do uruchamiania i zatrzymywania usług systemowych .
Każda jednostka jest zdefiniowana w pliku znajdującym się w -
/lib/systemd/system - pliki jednostek bazowych
/etc/systemd/system - zmodyfikowane pliki jednostek uruchamiane w czasie wykonywania
Zarządzaj usługami za pomocą systemctl
Aby pracować z systemd , będziemy musieli bardzo dobrze zapoznać się z poleceniem systemctl . Poniżej przedstawiono najpopularniejsze przełączniki wiersza poleceń dla systemctl .
Przełącznik | Akcja |
---|---|
-t | Rozdzielana przecinkami wartość typów jednostek, takich jak usługa lub gniazdo |
-za | Pokazuje wszystkie załadowane jednostki |
--stan | Wyświetla wszystkie jednostki w zdefiniowanym stanie: obciążenie, podrzędne, aktywne, nieaktywne itp. |
-H | Wykonuje operację zdalnie. Podaj nazwę hosta lub hosta i użytkownika oddzielone znakiem @. |
Podstawowe użycie systemctl
systemctl [operation]
example: systemctl --state [servicename.service]
Aby szybko przejrzeć wszystkie usługi uruchomione na naszym pudełku.
[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
Zatrzymywanie usługi
Najpierw zatrzymajmy usługę bluetooth.
[root@localhost]# systemctl stop bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded inactive dead Bluetooth service
[root@localhost]#
Jak widać, usługa bluetooth jest teraz nieaktywna.
Aby ponownie uruchomić usługę Bluetooth.
[root@localhost]# systemctl start bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded active running Bluetooth service
[root@localhost]#
Note- Nie określiliśmy bluetooth.service, ponieważ domniemana jest usługa .service . Dobrą praktyką jest myślenie o typie jednostki dołączanej do usługi, z którą mamy do czynienia. Dlatego od teraz będziemy używać rozszerzenia .service, aby wyjaśnić, że pracujemy nad operacjami jednostek usług.
Podstawowe czynności, które można wykonać w usłudze, to:
Początek | Uruchamia usługę |
Zatrzymać | Zatrzymuje usługę |
Przeładować | Ponownie ładuje aktywną konfigurację usługi bez jej zatrzymywania (jak kill -HUP w init systemowym) |
Uruchom ponownie | Uruchamia, a następnie zatrzymuje usługę |
Włączyć | Uruchamia usługę w czasie rozruchu |
Wyłączyć | Zatrzymuje automatyczne uruchamianie usługi w czasie wykonywania |
Powyższe działania są używane głównie w następujących scenariuszach -
Początek | Aby uruchomić usługę, która została zatrzymana. |
Zatrzymać | Aby tymczasowo zamknąć usługę (na przykład gdy usługa musi zostać zatrzymana, aby uzyskać dostęp do plików zablokowanych przez usługę, jak podczas aktualizacji usługi) |
Przeładować | Gdy plik konfiguracyjny został wyedytowany i chcemy zastosować nowe zmiany bez zatrzymywania usługi. |
Uruchom ponownie | W tym samym scenariuszu, co przeładowanie, ale usługa nie obsługuje ponownego ładowania . |
Włączyć | Gdy chcemy, aby wyłączona usługa działała w czasie rozruchu. |
Wyłączyć | Używany głównie w przypadku konieczności zatrzymania usługi, ale uruchamia się on podczas rozruchu. |
Aby sprawdzić stan usługi -
[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]#
Pokaż nam aktualny stan usługi sieciowej . Jeśli chcemy zobaczyć wszystkie usługi związane z siecią, możemy skorzystać -
[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]#
Dla osób zaznajomionych z sysinitmetody zarządzania usługami, ważne jest, aby przejść na systemd . systemd to nowy sposób uruchamiania i zatrzymywania usług demonów w systemie Linux.