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 [2015/12/06 22:10] – modification externe 127.0.0.1 | 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 ! | ||
