SystemD

Já iba tak nakrátko, keď bolo už ten SystemD spomínané v Čude naposledy, že týpek moderátor tam ani nevedel, že presne čo to ten SystemD je a aké novinky to prináša, tak pár slof o tem číl:

### História:

Prvý bol uvedený SystemD do Fedory 15, vtedy som to už začal používať ako early adopter, ale ludie na to nadávali, lebo to bolo strašne nestabilné a preto Fedora 15 bola jedna veľká katastrofa.

Od Fedory 16 a realisticky od Fedory 17 ale ten SystemD začal byť OK a v Fedore 19 označený za stabilný, preto to potom integrovali do RHEL 7 (čo já používam skrz CentOS 7).

Debian od Debian-8 verzie má tiež SystemD, dosť sa o tom vadili, nechceli to, z rôznych dôvodov. Okrem iného ale preto, lebo to láme kompatibilitu s BSD operačnýma systémami.

### Použitie:

**/usr/lib/systemd/systemd** beží ako PID 1 a od neho sa spawnujú šecky procesy,

- čo v pstree čovek môže dobre videť.

```
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─3*[{NetworkManager}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
...

```

- čiže je to náhrada za pôvodný init proces, kerý túto úlohu mal prebratú predtým.

tuto napríklad Amazon Linux (kompatibilné s RHEL 6):

```
init─┬─agetty
     ├─atd
     ├─auditd───{auditd}
     ├─crond
     ├─dbus-daemon───{dbus-daemon}
     ├─dhclient

```

**systemctl -t service** ukáže servicy, keré sú naládované, ako predtým chkconfig.

**/usr/lib/systemd/** a potom pod system sa nachádzajú system servicy, ktoré je potom možné odtiaľ ládovať do **/etc/systemd/**, kde sa nachádza aktuálna konfigurácia.

konfigurácia prebieha normálne skrz systemctl, napr cez príkazy enable, disable, start a stop, ale enablovat a disablovať môžem niečo aj manuálne, lebo nič iné sa nedeje, len sa zlinkovávajú veci na /lib/systemd, čiže napríklad:

```
/etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

```

ten link v /etc/systemd určuje, že systém nabootuje skrz systemd do grafického targetu, čiže:

```
/etc/systemd/system/display-manager.service -> /usr/lib/systemd/system/lightdm.service

```

v mojom prípade lightdm grafický login manager, a aké ešte procesy štartujú vidíme skrz jeho fajl: **/lib/systemd/system/graphical.target** a to:

```
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
After=multi-user.target
Conflicts=rescue.target
Wants=display-manager.service
AllowIsolate=yes

```

Čiže **display-manager.service**, čo je v mojom prípade *LightDM*, ale môže to byť aj *GDM*, alebo *KDM*, alebo *SLIM*, a až po multi-user.targete, čo má za závislosti:

```
lrwxrwxrwx. 1 root root 41 Apr 27 10:35 abrt-ccpp.service -> /usr/lib/systemd/system/abrt-ccpp.service
lrwxrwxrwx. 1 root root 37 Apr 27 10:35 abrtd.service -> /usr/lib/systemd/system/abrtd.service
lrwxrwxrwx. 1 root root 41 Apr 27 10:35 abrt-oops.service -> /usr/lib/systemd/system/abrt-oops.service
lrwxrwxrwx. 1 root root 43 Apr 27 10:35 abrt-vmcore.service -> /usr/lib/systemd/system/abrt-vmcore.service
lrwxrwxrwx. 1 root root 41 Apr 27 10:35 abrt-xorg.service -> /usr/lib/systemd/system/abrt-xorg.service
lrwxrwxrwx. 1 root root 35 May 18 16:04 atd.service -> /usr/lib/systemd/system/atd.service
lrwxrwxrwx. 1 root root 38 Apr 27 10:14 auditd.service -> /usr/lib/systemd/system/auditd.service
lrwxrwxrwx. 1 root root 37 Apr 27 10:13 crond.service -> /usr/lib/systemd/system/crond.service
lrwxrwxrwx. 1 root root 33 Jun  8 13:42 cups.path -> /usr/lib/systemd/system/cups.path
lrwxrwxrwx. 1 root root 38 Jul  3 09:37 docker.service -> /usr/lib/systemd/system/docker.service
lrwxrwxrwx. 1 root root 42 Apr 27 10:14 irqbalance.service -> /usr/lib/systemd/system/irqbalance.service
lrwxrwxrwx. 1 root root 40 Jun 17 15:20 libvirtd.service -> /usr/lib/systemd/system/libvirtd.service
lrwxrwxrwx. 1 root root 46 Jun 17 15:31 libvirt-guests.service -> /usr/lib/systemd/system/libvirt-guests.service
lrwxrwxrwx. 1 root root 42 Jun 11 09:27 lm_sensors.service -> /usr/lib/systemd/system/lm_sensors.service
lrwxrwxrwx. 1 root root 41 Apr 27 10:29 mdmonitor.service -> /usr/lib/systemd/system/mdmonitor.service
lrwxrwxrwx. 1 root root 44 Apr 27 10:37 ModemManager.service -> /usr/lib/systemd/system/ModemManager.service
lrwxrwxrwx. 1 root root 49 Jun 17 15:19 netcf-transaction.service -> /usr/lib/systemd/system/netcf-transaction.service
lrwxrwxrwx. 1 root root 46 Apr 27 10:14 NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
lrwxrwxrwx. 1 root root 37 Jul  8 13:40 nginx.service -> /usr/lib/systemd/system/nginx.service
lrwxrwxrwx. 1 root root 39 Jul 24 12:22 php-fpm.service -> /usr/lib/systemd/system/php-fpm.service
lrwxrwxrwx. 1 root root 39 Apr 27 10:14 postfix.service -> /usr/lib/systemd/system/postfix.service
lrwxrwxrwx. 1 root root 40 Apr 27 10:13 remote-fs.target -> /usr/lib/systemd/system/remote-fs.target
lrwxrwxrwx. 1 root root 39 Apr 27 10:14 rsyslog.service -> /usr/lib/systemd/system/rsyslog.service
lrwxrwxrwx. 1 root root 38 Apr 27 13:04 smartd.service -> /usr/lib/systemd/system/smartd.service
lrwxrwxrwx. 1 root root 39 May  8 14:29 sysstat.service -> /usr/lib/systemd/system/sysstat.service
lrwxrwxrwx. 1 root root 37 Apr 27 10:14 tuned.service -> /usr/lib/systemd/system/tuned.service
lrwxrwxrwx. 1 root root 40 Apr 27 10:31 vmtoolsd.service -> /usr/lib/systemd/system/vmtoolsd.service

```

čiže takto to môžeme vidieť manuálne.

Keď ale všetko ide tak ako má, tak sa na to nepozeráme, ale kukáme sa na šecko cez spomínaný tool systemctl.

**systemctl status docker.service** nám ukáže, aký je status *docker* servicu:

```
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
   Active: active (running) since Mon 2015-08-10 09:01:39 CEST; 1h 51min ago
     Docs: http://docs.docker.com
 Main PID: 1303 (docker)
   CGroup: /system.slice/docker.service
           └─1303 /usr/bin/docker -d --selinux-enabled --storage-driver=vfs

```