Работа с systemd

Описание

  • Systemd - системный демон, менеджер всех задач после старта ядра Linux

  • Управляемые элементы называются юнитами

    • сервисы

    • монтирование

    • таймеры

    • и т.д.

  • systemctl - интерфейс управления для работы с systemd

  • Для администратора наиболее важным функционалом является управление сервисами

[root@centos8 ~]# systemctl 
add-requires            get-default             list-machines           revert
add-wants               halt                    list-sockets            set-default
cancel                  help                    list-timers             set-environment
cat                     hibernate               list-unit-files         set-property
condreload              hybrid-sleep            list-units              show
condrestart             import-environment      mask                    show-environment
condstop                is-active               poweroff                start
daemon-reexec           is-enabled              preset                  status
daemon-reload           is-failed               preset-all              stop
default                 isolate                 reboot                  suspend
disable                 is-system-running       reenable                suspend-then-hibernate
edit                    kexec                   reload                  switch-root
emergency               kill                    reload-or-restart       try-reload-or-restart
enable                  link                    rescue                  try-restart
exit                    list-dependencies       reset-failed            unmask
force-reload            list-jobs               restart                 unset-environment
[root@centos8 ~]# systemctl -t help
Available unit types:
service
socket
target
device
mount
automount
swap
timer
path
slice
scope
  • systemctl list-unit-files - отобразит файлы юнитов

[root@centos8 ~]# systemctl list-unit-files 
UNIT FILE                                  STATE    
proc-sys-fs-binfmt_misc.automount          static   
-.mount                                    generated
boot.mount                                 generated
dev-hugepages.mount                        static   
dev-mqueue.mount                           static   
proc-fs-nfsd.mount                         static   
proc-sys-fs-binfmt_misc.mount              static   
sys-fs-fuse-connections.mount              static   
sys-kernel-config.mount                    static   
sys-kernel-debug.mount                     static   
tmp.mount                                  disabled 
var-lib-machines.mount                     static   
var-lib-nfs-rpc_pipefs.mount               static   
cups.path                                  enabled  
ostree-finalize-staged.path                disabled 
systemd-ask-password-console.path          static   
systemd-ask-password-plymouth.path         static   
systemd-ask-password-wall.path             static   
session-7.scope                            transient
session-9.scope                            transient
session-c1.scope                           transient
accounts-daemon.service                    enabled  
  • systemctl list-units - отобразит все юниты системы

Управление сервисами

  • "Disabled/enabled" - определяет, будет ли сервис автоматически запускаться при загрузке системы

  • "Start/stop" - определяют состояние для текущего сеанса системы

[root@centos8 ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-02-29 20:54:07 MSK; 24h ago
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
 Main PID: 103647 (dhcpd)
   Status: "Dispatching packets..."
    Tasks: 1
   Memory: 1.1M
   CGroup: /system.slice/dhcpd.service
           └─103647 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
[root@centos8 ~]# systemctl stop dhcpd
[root@centos8 ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Sun 2020-03-01 21:37:54 MSK; 3s ago
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
  Process: 103647 ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $>
 Main PID: 103647 (code=killed, signal=TERM)
   Status: "Dispatching packets..."

Конфигурирование сервисов

  • По-умолчанию предоставляемые системой файлы юнитов хранятся в /usr/lib/systemd/system

    • Не рекомендуется для правки, лучше создать файл в /etc/systemd/system, которые будут выступать в роли оверлея

  • Пользовательские файлы хранятся в /etc/systemd/system

    • C обновлением пакетов их файлы перезапишутся

  • Файлы текущего сеанса генерируются в /run/systemd

  • Рекомендуется использовать для редактирования systemtl edit <unit.service>

  • systemctl show покажет список доступных параметров

    • Для применения может потребоваться systemctl daemon-reload и systemctl restart <service>

Last updated