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.