systemd
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
systemd [2017/10/15 18:59] – luc | systemd [2025/01/07 20:19] (Version actuelle) – luc | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Systemd ====== | ||
+ | |||
+ | Systemd, c'est un sujet polémique. Est-ce que c'est bien, est-ce que c'est pas bien, à quoi ça sert... Je ne rentre pas dedans, de toutes façons j'ai pas le niveau pour apporter un quelconque argument.\\ | ||
+ | Par contre, on le rencontre partout par défaut, donc faut savoir l' | ||
+ | |||
+ | ===== gérer des services ===== | ||
+ | |||
+ | Pour autoriser des services au démarrage, par exemple '' | ||
+ | < | ||
+ | systemctl enable systemd-networkd | ||
+ | # parfois on peut préciser : | ||
+ | systemctl enable systemd-networkd.service | ||
+ | </ | ||
+ | |||
+ | Pour empecher un service de se lancer au démarrage : | ||
+ | < | ||
+ | systemctl disable gdm | ||
+ | </ | ||
+ | |||
+ | Pour savoir si un service est lancé et si il se lance au démarrage : | ||
+ | < | ||
+ | systemctl status gdm | ||
+ | </ | ||
+ | |||
+ | ===== Executer au démarrage ===== | ||
+ | |||
+ | On souhaite executer un programme au démarrage de l' | ||
+ | |||
+ | Il faut donc créer un fichier '' | ||
+ | <code ini> | ||
+ | [Unit] | ||
+ | Description=Gogs (Go Git Service) | ||
+ | After=syslog.target | ||
+ | After=network.target | ||
+ | After=mysqld.service | ||
+ | |||
+ | [Service] | ||
+ | Type=simple | ||
+ | User=git | ||
+ | Group=git | ||
+ | WorkingDirectory=/ | ||
+ | ExecStart=/ | ||
+ | Restart=always | ||
+ | Environment=USER=git HOME=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=null-user.target | ||
+ | </ | ||
+ | |||
+ | Ensuite, un petit '' | ||
+ | |||
+ | ===== Executer en tant qu' | ||
+ | |||
+ | Ce qu'on a vu jusqu' | ||
+ | |||
+ | Mais si on souhaite pouvoir démarrer un service au niveau USER, par exemple au démarrage de la session, alors il faut s' | ||
+ | |||
+ | Les fichiers de conf (service, timer...) sont dans '' | ||
+ | |||
+ | <code ini> | ||
+ | [Unit] | ||
+ | Description=Nextcloud Sync | ||
+ | |||
+ | [Service] | ||
+ | Type=simple | ||
+ | ExecStart=COMMANDE AVEC ARGUMENTS | ||
+ | TimeoutStartSec=300 | ||
+ | Slice=nextcloud-sync.slice | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=default.target | ||
+ | </ | ||
+ | |||
+ | Ensuite, on pilote systemd en mode utiliseateur avec le flag '' | ||
+ | |||
+ | ===== Les timers ===== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Pour remplacer les crontab, et executer des scripts à intervalle régulier. | ||
+ | |||
+ | On crée le fichier '' | ||
+ | |||
+ | <code ini> | ||
+ | [Unit] | ||
+ | Description=Run Nextcloud Sync every 5 minutes | ||
+ | Requires=nextcloud-sync.service | ||
+ | |||
+ | [Timer] | ||
+ | Unit=nextcloud-sync.service | ||
+ | OnUnitInactiveSec=5m | ||
+ | RandomizedDelaySec=5m | ||
+ | AccuracySec=1s | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=timers.target | ||
+ | </ | ||
+ | |||
+ | et on démarre le timer avec '' | ||
+ | |||
+ | |||
+ | ===== Les slices ===== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Les slices servent à limiter la conso CPU et mémoire. Il faut créer un fichier config à la syntaxe de systemd, et les faire appeler par un service. | ||
+ | |||
+ | Par exemple faisons un slice pour le service nextcloud-sync.service défini dans le paragraphe " | ||
+ | |||
+ | <code ini> | ||
+ | [Unit] | ||
+ | Description=Nextcloud Sync Slice | ||
+ | DefaultDependencies=no | ||
+ | Before=slices.target | ||
+ | |||
+ | [Slice] | ||
+ | CPUQuota=30% | ||
+ | MemoryMax=2G | ||
+ | </ | ||
+ | |||
+ | Ne pas oublier d'y faire mention dans le fichier nextcloud-sync.service ! | ||