GNU/Linux >> Znalost Linux >  >> Linux

Jak spravovat služby Systemd pomocí Systemctl v systému Linux

Systemd standardní proces pro správu spouštěcích služeb v operačních systémech Linux. Používá se pro kontrolu, které programy se spouštějí při startu systému Linux. Je to systémový manažer a stal se novým standardem pro operační systémy Linux. Systemd vám umožňuje vytvořit vlastní službu systemd pro spouštění a správu jakéhokoli procesu. V tomto tutoriálu vysvětlíme, jak spravovat služby pomocí systemd na Linuxu.

Předpoklady

  • Server se systémem Linux se systémem Systemd, zde budu používat server Ubuntu 20.04.
  • Na serveru je nakonfigurováno heslo uživatele root.

Ověřit Systemd

Ve výchozím nastavení je Systemd předinstalován ve všech hlavních operačních systémech. Nainstalovanou verzi Systemd můžete ověřit pomocí následujícího příkazu:

systemctl --version

Měli byste vidět následující výstup:

systemd 245 (245.4-4ubuntu3)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid

Umístění Systemd můžete najít pomocí následujícího příkazu:

whereis systemd

Měli byste získat následující výstup:

systemd: /usr/bin/systemd /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz

Chcete-li najít umístění systemctl, spusťte následující příkaz:

whereis systemctl

Měli byste získat následující výstup:

systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz

Můžete také ověřit, zda Systemd běží nebo ne, pomocí následujícího příkazu:

ps -eaf | grep systemd

Měli byste získat následující výstup:

root         269       1  0 09:57 ?        00:00:01 /lib/systemd/systemd-journald
root         294       1  0 09:57 ?        00:00:00 /lib/systemd/systemd-udevd
systemd+     297       1  0 09:57 ?        00:00:00 /lib/systemd/systemd-networkd
message+     319       1  0 09:57 ?        00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root         329       1  0 09:57 ?        00:00:00 /lib/systemd/systemd-logind
systemd+     382       1  0 09:57 ?        00:00:00 /lib/systemd/systemd-resolved
root        1128       1  0 10:47 ?        00:00:00 /lib/systemd/systemd --user
root        1177    1152  0 10:48 pts/0    00:00:00 grep --color=auto systemd

Můžete také analyzovat dobu, kterou každý proces zabere při spouštění systému, pomocí následujícího příkazu:

systemd-analyze blame

Měli byste získat následující výstup:

3.662s csm.service                         
1.899s apt-daily-upgrade.service           
1.798s dev-sda1.device                     
1.400s systemd-logind.service              
1.336s fstrim.service                      
1.207s systemd-networkd.service            
1.131s systemd-resolved.service            
 856ms man-db.service                      
 842ms systemd-journald.service            
 415ms e2scrub_reap.service                
 320ms keyboard-setup.service              
 295ms networkd-dispatcher.service         
 239ms systemd-udev-trigger.service 

Chcete-li analyzovat kritický řetězec při spouštění, použijte následující příkaz:

systemd-analyze critical-chain

Měli byste získat následující výstup:

The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.

graphical.target @4.948s
??multi-user.target @4.946s
  ??csm.service @1.282s +3.662s
    ??basic.target @1.277s
      ??sockets.target @1.276s
        ??dbus.socket @1.274s
          ??sysinit.target @1.257s
            ??systemd-update-utmp.service @1.247s +8ms
              ??systemd-tmpfiles-setup.service @1.228s +17ms
                ??systemd-journal-flush.service @1.201s +24ms
                  ??systemd-journald.service @356ms +842ms
                    ??systemd-journald.socket @313ms
                      ??system.slice @225ms
                        ??-.slice @225ms

Správa služeb pomocí Systemd

Systemctl poskytuje jednodušší způsob správy služeb systemd.

Chcete-li spustit službu Apache, spusťte následující příkaz:

systemctl start apache2

Chcete-li restartovat službu Apache, spusťte následující příkaz:

systemctl restart apache2

Chcete-li zastavit službu Apache, spusťte následující příkaz:

systemctl stop apache2

Chcete-li znovu načíst službu Apache, spusťte následující příkaz:

systemctl reload apache2

Chcete-li povolit spuštění služby Apache po restartování systému, spusťte následující příkaz:

systemctl enable apache2

Chcete-li odebrat službu Apache ze spouštění systému, spusťte následující příkaz:

systemctl disable apache2

Chcete-li službu Apache ukončit, spusťte následující příkaz:

systemctl kill apache2

Chcete-li maskovat službu Apache, spusťte následující příkaz:

systemctl mask apache2

Chcete-li odmaskovat proces Apache, spusťte následující příkaz:

systemctl unmask apache2

Chcete-li zkontrolovat, zda je služba Apache povolena nebo ne, spusťte následující příkaz:

systemctl is-enabled apache2

Chcete-li zkontrolovat stav služby Apache, spusťte následující příkaz:

systemctl status apache2

Pokud je služba spuštěna, měli byste získat následující výstup:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-01-09 10:53:12 UTC; 26s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 1708 (apache2)
      Tasks: 55 (limit: 2353)
     Memory: 5.8M
     CGroup: /system.slice/apache2.service
             ??1708 /usr/sbin/apache2 -k start
             ??1709 /usr/sbin/apache2 -k start
             ??1710 /usr/sbin/apache2 -k start

Jan 09 10:53:12 ubuntu2004 systemd[1]: Starting The Apache HTTP Server...

Po přejmenování nebo odstranění jakéhokoli souboru systemd jej budete muset znovu načíst, aby se změny projevily. Chcete-li znovu načíst soubor služby systemd, spusťte následující příkaz:

systemctl daemon-reload

Správa souborů systémových jednotek

Výše uvedené příkazy budou užitečné pro správu jednotlivých služeb. Nelze jej však použít k nalezení aktuálního stavu systému. Existuje mnoho dalších příkazů, které jsou užitečné pro poskytování těchto informací.

Chcete-li zobrazit seznam všech dostupných jednotek, spusťte následující příkaz:

systemctl list-unit-files

V následujícím výstupu byste měli vidět seznam všech souborů jednotek:

UNIT FILE                              STATE           VENDOR PRESET
proc-sys-fs-binfmt_misc.automount      static          enabled      
-.mount                                generated       enabled      
dev-hugepages.mount                    static          enabled      
dev-mqueue.mount                       static          enabled      
proc-sys-fs-binfmt_misc.mount          disabled        enabled      
sys-fs-fuse-connections.mount          static          enabled      
sys-kernel-config.mount                static          enabled      
sys-kernel-debug.mount                 static          enabled      
sys-kernel-tracing.mount               static          enabled      
acpid.path                             enabled         enabled      
ntp-systemd-netif.path                 enabled         enabled      
systemd-ask-password-console.path      static          enabled      
systemd-ask-password-wall.path         static          enabled      
session-2.scope                        transient       enabled      
acpid.service                          disabled        enabled      
apt-daily-upgrade.service              static          enabled      
apt-daily.service                      static          enabled      
[email protected]                        enabled         enabled      
console-getty.service                  disabled        disabled     
console-setup.service                  enabled         enabled      
[email protected]               static          enabled      
cron.service                           enabled         enabled      
cryptdisks-early.service               masked          enabled      
cryptdisks.service                     masked          enabled      
csm.service                            enabled         enabled      
dbus-org.freedesktop.hostname1.service static          enabled      
dbus-org.freedesktop.locale1.service   static          enabled      

Chcete-li zobrazit seznam všech aktivních jednotek, spusťte následující příkaz:

systemctl list-units

Měli byste vidět následující výstup:

  UNIT                                                                                        LOAD   ACTIVE SUB       DESCRIPTION             >
  proc-sys-fs-binfmt_misc.automount                                                           loaded active waiting   Arbitrary Executable Fil>
  sys-devices-pci0000:00-0000:00:03.0-virtio0-net-eth0.device                                 loaded active plugged   Virtio network device   >
  sys-devices-pci0000:00-0000:00:04.0-virtio1-net-eth1.device                                 loaded active plugged   Virtio network device   >
  sys-devices-pci0000:00-0000:00:05.0-virtio2-host2-target2:0:0-2:0:0:0-block-sda-sda1.device loaded active plugged   QEMU_HARDDISK 1         >
  sys-devices-pci0000:00-0000:00:05.0-virtio2-host2-target2:0:0-2:0:0:0-block-sda.device      loaded active plugged   QEMU_HARDDISK           >
  sys-devices-platform-serial8250-tty-ttyS1.device                                            loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS10.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS11.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS12.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS13.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS14.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS15.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS16.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS17.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS18.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS19.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS2.device                                            loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS20.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS21.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS22.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS23.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS24.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS25.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS26.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS27.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS28.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS29.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS3.device                                            loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS30.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS31.device                                           loaded active plugged   /sys/devices/platform/se>

Chcete-li zobrazit seznam všech neúspěšných jednotek, spusťte následující příkaz:

systemctl --failed

Chcete-li zobrazit seznam všech služeb včetně povolených a zakázaných služeb, spusťte následující příkaz:

systemctl list-unit-files --type=service

Měli byste vidět následující výstup:

UNIT FILE                              STATE           VENDOR PRESET
acpid.service                          disabled        enabled      
apache-htcacheclean.service            disabled        enabled      
[email protected]           disabled        enabled      
apache2.service                        enabled         enabled      
[email protected]                       disabled        enabled      
apt-daily-upgrade.service              static          enabled      
apt-daily.service                      static          enabled      
[email protected]                        enabled         enabled      
console-getty.service                  disabled        disabled     
console-setup.service                  enabled         enabled      
[email protected]               static          enabled      
cron.service                           enabled         enabled      
cryptdisks-early.service               masked          enabled      
cryptdisks.service                     masked          enabled      
csm.service                            enabled         enabled      
dbus-org.freedesktop.hostname1.service static          enabled      
dbus-org.freedesktop.locale1.service   static          enabled      
dbus-org.freedesktop.login1.service    static          enabled      
dbus-org.freedesktop.resolve1.service  enabled         enabled      
dbus-org.freedesktop.timedate1.service static          enabled      
dbus-org.freedesktop.timesync1.service masked          enabled      
dbus.service                           static          enabled      
debug-shell.service                    disabled        disabled     
dmesg.service                          enabled         enabled      
[email protected]                       static          enabled      
e2scrub_all.service                    static          enabled      
[email protected]                  static          enabled      
e2scrub_reap.service                   enabled         enabled      
emergency.service                      static          enabled      
fstrim.service                         static          enabled      
getty-static.service                   static          enabled      
[email protected]                         enabled         enabled      

Můžete vidět vlastnosti jednotky SSH, spusťte následující příkaz:

systemctl show sshd.service

Měli byste vidět následující výstup:

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

Správa soketů pomocí Systemctl

Sokety můžete také spravovat pomocí příkazu Systemctl.

Chcete-li zobrazit všechny dostupné systémové sokety, spusťte následující příkaz:

systemctl list-unit-files --type=socket

Měli byste vidět následující výstup:

UNIT FILE                        STATE    VENDOR PRESET
acpid.socket                     enabled  enabled      
dbus.socket                      static   enabled      
ssh.socket                       disabled enabled      
syslog.socket                    static   disabled     
systemd-fsckd.socket             static   enabled      
systemd-initctl.socket           static   enabled      
systemd-journald-audit.socket    static   enabled      
systemd-journald-dev-log.socket  static   enabled      
[email protected] static   enabled      
systemd-journald.socket          static   enabled      
[email protected]         static   enabled      
systemd-networkd.socket          disabled enabled      
systemd-rfkill.socket            static   enabled      
systemd-udevd-control.socket     static   enabled      
systemd-udevd-kernel.socket      static   enabled      

Chcete-li spustit soket SSH, spusťte následující příkaz:

systemctl start ssh.socket

Chcete-li zastavit soket SSH, spusťte následující příkaz:

systemctl stop ssh.socket

Chcete-li restartovat soket SSH, spusťte následující příkaz:

systemctl restart ssh.socket

Chcete-li zkontrolovat stav soketu SSH, spusťte následující příkaz:

systemctl status ssh.socket

Chcete-li povolit nebo zakázat soket SSH při spouštění, spusťte následující příkaz:

systemctl enable ssh.socket
systemctl disable ssh.socket

Další příkazy Systemctl

Pomocí příkazu systemctl můžete provést několik úloh. Pokud chcete uvést systém do režimu pro jednoho uživatele, spusťte následující příkaz:

systemctl rescue

Chcete-li systém zastavit, spusťte následující příkaz:

systemctl halt

Chcete-li systém vypnout, spusťte následující příkaz:

systemctl poweroff

Chcete-li restartovat systém, spusťte následující příkaz:

systemctl reboot

Závěr

Ve výše uvedené příručce jste se naučili, jak spravovat a ovládat službu systemd v systému Linux. Doufám, že vám to pomůže při interakci a ovládání vaší instance systemd. Neváhejte se mě zeptat, pokud máte nějaké otázky.


Linux
  1. Jak spravovat a vypisovat služby v Linuxu

  2. Jak spravovat systémové jednotky při spuštění

  3. Jak používat příkaz Systemctl ke správě služeb Systemd

  1. Spravujte více instancí služeb pomocí systemctl

  2. Jak vytvořit službu Systemd v Linuxu

  3. Jak spravovat služby Linux pomocí příkazu systemctl

  1. Jak vypsat Systemd Services v Linuxu

  2. Ke správě služeb použijte Systemctl

  3. Jak odstranit systémové služby