[Question] Systemd

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
dexter74
Daikyu
Messages : 53
Inscription : jeu. 28 oct. 2021, 20:24
Localisation : Annemasse

[Question] Systemd

Message par dexter74 »

Bonjour,

en cherchant sur internet, j'ai pas trouvé une réponses sur l'utilité des différents services concernant Systemd. Je souhaiterai savoir quels sont les services à activer et ceux à ignorer et avec leur équivalent.


Code : Tout sélectionner

systemctl list-unit-files --type=service | grep "^systemd-" | cut -c 1-40 | grep -v "wait\|@"
systemd-ask-password-console.service
systemd-ask-password-wall.service
systemd-binfmt.service
systemd-bless-boot.service
systemd-boot-check-no-failures.service
systemd-boot-random-seed.service
systemd-boot-update.service
systemd-exit.service
systemd-firstboot.service
systemd-fsck-root.service
systemd-growfs-root.service
systemd-halt.service
systemd-hibernate.service
------------------------------------------------
systemd-homed-activate.service
systemd-homed.service
------------------------------------------------
systemd-hostnamed.service
systemd-hwdb-update.service
systemd-hybrid-sleep.service
systemd-importd.service
systemd-journal-catalog-update.service
systemd-journal-flush.service
systemd-journal-gatewayd.service
systemd-journal-remote.service
systemd-journal-upload.service
systemd-journald.service
systemd-kexec.service
systemd-localed.service
systemd-logind.service
systemd-machine-id-commit.service
systemd-machined.service
systemd-modules-load.service
------------------------------------------------
systemd-network-generator.service
systemd-networkd.service
------------------------------------------------
systemd-oomd.service
systemd-pcrfs-root.service
systemd-pcrmachine.service
systemd-pcrphase-initrd.service
systemd-pcrphase-sysinit.service
systemd-pcrphase.service
systemd-portabled.service
systemd-poweroff.service
systemd-pstore.service
systemd-quotacheck.service
systemd-random-seed.service
systemd-reboot.service
systemd-remount-fs.service
systemd-repart.service
------------------------------------------------
systemd-resolved.service
------------------------------------------------
systemd-rfkill.service
systemd-suspend-then-hibernate.service
systemd-suspend.service
systemd-sysctl.service
systemd-sysext.service
systemd-sysupdate-reboot.service
systemd-sysupdate.service
systemd-sysusers.service
------------------------------------------------
systemd-timedated.service
systemd-timesyncd.service
------------------------------------------------
systemd-tmpfiles-clean.service
systemd-tmpfiles-setup-dev.service
systemd-tmpfiles-setup.service
systemd-udev-settle.service
systemd-udev-trigger.service
systemd-udevd.service
systemd-update-done.service
systemd-update-utmp.service
------------------------------------------------
systemd-user-sessions.service
------------------------------------------------
systemd-userdbd.service
------------------------------------------------
systemd-vconsole-setup.service
------------------------------------------------
systemd-volatile-root.service
Note:

Code : Tout sélectionner

- Partition 1: FAT /boot
- Partition 2: LVM (/, /home, /Backup)
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [Question] Systemd

Message par papajoke »

bonjour

tu peux lancer un petit code de ce type qui va donner le descriptif et l'entrée man et pour certains une url

Code : Tout sélectionner

for s in $(systemctl list-unit-files --type=service | awk '/^systemd/ {print $1}'); do 
   echo "$s";
   systemctl cat "$s" | grep -E '^(Desc|Doc|Exec)';
   echo;
done;
commande a écrit :systemd-remount-fs.service
Description=Remount Root and Kernel File Systems
Documentation=man:systemd-remount-fs.service(8)
Documentation=https://www.freedesktop.org/wiki/Softwa ... ileSystems
ExecStart=/usr/lib/systemd/systemd-remount-fs
...
systemd-resolved.service
Description=Network Name Resolution
Documentation=man:systemd-resolved.service(8)
Documentation=man:org.freedesktop.resolve1(5)
Documentation=https://www.freedesktop.org/wiki/Softwa ... n-managers
Documentation=https://www.freedesktop.org/wiki/Softwa ... er-clients
ExecStart=!!/usr/lib/systemd/systemd-resolved

-------------------------------

Sinon, tu devrais plutôt demander à chat-gpt :wink:
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [Question] Systemd

Message par papajoke »

papajoke a écrit : dim. 19 mars 2023, 12:47 Sinon, tu devrais plutôt demander à chat-gpt :wink:
J'ai fait le même script (en python/shell) avec une demande succincte au félin avec problèmes gastriques. Après, on peut lui demander plus de détails dans le chat.
Prérequis : une clé de développement openai

Code : Tout sélectionner

#! /usr/bin/env python
import os
from pathlib import Path
import subprocess
import openai  # yay -S python-openai --as-deps

OPENAI_API_KEY = "WWWWYYYYYZZZZZ"
openai.api_key = os.getenv("OPENAI_API_KEY", OPENAI_API_KEY)

def ask(question: str) -> str:
    response = openai.Completion.create(
        model="text-davinci-002",
        prompt=question + ".Si pas de réponse, ne rien retourner. Répondre en francais uniquement.",
        temperature=0.2,
        max_tokens=400,
        top_p=1,
        frequency_penalty=0,
        presence_penalty=0
    )
    return response["choices"][0].text.strip()

def bash(cmd: str) -> str:
    output = subprocess.check_output(
        cmd,
        shell=True,
        text=True,
    )
    return output.split("\n")

output = bash("systemctl list-unit-files -q --type=service --no-pager")
services = [s.split()[0] for s in output if s.startswith("systemd-")]

for i, service in enumerate(services):
    print("\n")
    print("-"*32)
    print(service.upper())
    output = bash(f"systemctl cat {service}")
    for line in output:
        if line.startswith("Desc"):
            print(f"\t->", line.split('=', maxsplit=2)[1])
        elif line.startswith("Docu"):
            print(f"\t#  ", line.split('=', maxsplit=2)[1])
        elif line.startswith("Exec"):
            print(f"\t\t# ", line)
    response = ask(f"résumé en 6 lignes maximum, pourquoi, sous linux, utiliser l'unit systemd : \"{service}\" ?")
    response = response.removeprefix("?").strip()
    print(" ", response)

    if i > 99:
        break
Les premières réponses, avec la question "pourquoi, sous linux, utiliser l'unit systemd XXXX"
miaou a écrit : SYSTEMD-ASK-PASSWORD-CONSOLE.SERVICE
-> Dispatch Password Requests to Console
# man:systemd-ask-password-console.service(8)
# ExecStart=systemd-tty-ask-password-agent --watch --console
systemd-ask-password-console.service est un service qui permet aux utilisateurs de saisir leur mot de passe lorsqu'ils sont invités à le faire. Ce service est particulièrement utile pour les systèmes qui nécessitent une authentification forte, comme les serveurs.


--------------------------------
SYSTEMD-ASK-PASSWORD-WALL.SERVICE
-> Forward Password Requests to Wall
# man:systemd-ask-password-wall.service(8)
# ExecStartPre=-systemctl stop systemd-ask-password-console.path systemd-ask-password-console.service systemd-ask-password-plymouth.path systemd-ask-password-plymouth.service
# ExecStart=systemd-tty-ask-password-agent --wall
systemd-ask-password-wall.service est un service qui permet aux utilisateurs de demander un mot de passe lorsqu'ils tentent d'accéder à un fichier ou un dossier protégé par un mot de passe. Ce service est particulièrement utile lorsque vous avez besoin de protéger des fichiers sensibles et que vous ne voulez pas que tout le monde puisse y accéder.


--------------------------------
SYSTEMD-BACKLIGHT@.SERVICE
-> Load/Save Screen Backlight Brightness of %i
# man:systemd-backlight@.service(8)
# ExecStart=/usr/lib/systemd/systemd-backlight load %i
# ExecStop=/usr/lib/systemd/systemd-backlight save %i
systemd est un système et un gestionnaire de service init utilisé dans les systèmes Linux. systemd-backlight@.service est un service systemd qui permet de gérer le rétroéclairage de l'écran.


--------------------------------
SYSTEMD-BINFMT.SERVICE
-> Set Up Additional Binary Formats
# man:systemd-binfmt.service(8) man:binfmt.d(5)
# https://docs.kernel.org/admin-guide/binfmt-misc.html
# https://www.freedesktop.org/wiki/Softwa ... ileSystems
# ExecStart=/usr/lib/systemd/systemd-binfmt
# ExecStop=/usr/lib/systemd/systemd-binfmt --unregister
systemd-binfmt.service permet de configurer les binaires pour qu'ils puissent être exécutés sur différents systèmes d'exploitation.


--------------------------------
SYSTEMD-BLESS-BOOT.SERVICE
-> Mark the Current Boot Loader Entry as Good
# man:systemd-bless-boot.service(8)
# ExecStart=/usr/lib/systemd/systemd-bless-boot good
systemd-bless-boot.service est un service qui permet de configurer le système pour qu'il puisse démarrer avec systemd. Ce service est nécessaire pour les systèmes qui utilisent systemd comme gestionnaire de démarrage.


--------------------------------
SYSTEMD-BOOT-CHECK-NO-FAILURES.SERVICE
-> Check if Any System Units Failed
# man:systemd-boot-check-no-failures.service(8)
# ExecStart=/usr/lib/systemd/systemd-boot-check-no-failures
systemd-boot-check-no-failures.service est un service qui vérifie si le démarrage de Linux a échoué et si oui, il envoie une notification à l'utilisateur.


--------------------------------
SYSTEMD-BOOT-RANDOM-SEED.SERVICE
-> Update Boot Loader Random Seed
# man:systemd-boot-random-seed.service(8) man:random(4)
# ExecStart=bootctl --graceful random-seed
systemd-boot-random-seed.service permet de générer une graine aléatoire pour le démarrage de Linux. Cela permet d'améliorer la sécurité du système en empêchant les attaques basées sur la prédiction du nombre aléatoire généré lors du démarrage.


--------------------------------
SYSTEMD-BOOT-UPDATE.SERVICE
-> Automatic Boot Loader Update
# man:bootctl(1)
# ExecStart=bootctl --no-variables --graceful update
systemd-boot-update.service permet de mettre à jour le démarrage de Linux automatiquement et de manière transparente. Cela permet aux administrateurs de systèmes de ne pas avoir à reconfigurer manuellement le démarrage de Linux chaque fois qu'une mise à jour est disponible.


--------------------------------
SYSTEMD-COREDUMP@.SERVICE
-> Process Core Dump
# man:systemd-coredump(8)
# ExecStart=-/usr/lib/systemd/systemd-coredump
systemd-coredump@.service permet aux services de déposer des cœurs en cas de plantage et de les stocker dans le dossier /var/lib/systemd/coredump/. Les cœurs peuvent ensuite être analysés pour trouver la cause du plantage.


--------------------------------
SYSTEMD-EXIT.SERVICE
-> Exit the Container
# man:systemd.special(7)
systemd-exit.service est un service qui permet à systemd de gérer la fin d'un processus. Ce service permet à systemd de nettoyer les fichiers et les processus en cours d'exécution, de libérer les ressources utilisées par le processus et de mettre à jour les journaux.


--------------------------------
SYSTEMD-FIRSTBOOT.SERVICE
-> First Boot Wizard
# man:systemd-firstboot(1)
# ExecStart=systemd-firstboot --prompt-locale --prompt-timezone --prompt-root-password
systemd-firstboot.service est un service qui permet de configurer les paramètres de base d'un système Linux après l'installation. Ce service est particulièrement utile pour les systèmes Linux qui sont installés sur des machines virtuelles, car il permet de configurer les paramètres de base sans avoir à se connecter à la machine virtuelle.


--------------------------------
SYSTEMD-FSCK-ROOT.SERVICE
-> File System Check on Root Device
# man:systemd-fsck-root.service(8)
# ExecStart=/usr/lib/systemd/systemd-fsck
systemd-fsck-root.service est un service qui permet de vérifier le filesystem de la machine lors du démarrage et de réparer les erreurs éventuelles. Ce service est particulièrement utile sur les serveurs où il est important de s'assurer que le filesystem est sain avant de démarrer les services.


--------------------------------
SYSTEMD-FSCK@.SERVICE
-> File System Check on %f
# man:systemd-fsck@.service(8)
# ExecStart=/usr/lib/systemd/systemd-fsck %f
systemd-fsck@.service est un service qui permet de vérifier et de réparer les systèmes de fichiers lors du démarrage de Linux. Ce service est particulièrement utile lorsque vous avez plusieurs systèmes de fichiers montés et que vous souhaitez vous assurer que tous les systèmes de fichiers sont en bon état avant de les utiliser.



--------------------------------
SYSTEMD-GROWFS-ROOT.SERVICE
-> Grow Root File System
# man:systemd-growfs-root.service(8)
# ExecStart=/usr/lib/systemd/systemd-growfs /
systemd-growfs-root.service est un service systemd qui permet de monter et de gérer les systèmes de fichiers racine. Ce service est particulièrement utile pour les systèmes de fichiers en lecture seule, comme ceux utilisés par les appliances virtuelle.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Question] Systemd

Message par benjarobin »

Sérieusement chat-gpt ? Alors qu'il suffit de taper man et le nom du service pour avoir une explication.

Bref une très grosse partie des services listées ne peuvent pas être activé (enabled), ce sont des services "internes" à systemd.
Tu as uniquement ces "unit" qui peuvent être activés :

Code : Tout sélectionner

systemd-boot-update.service
systemd-homed.service
systemd-journal-upload.service
systemd-network-generator.service
systemd-networkd.service
systemd-oomd.service
systemd-pstore.service
systemd-resolved.service
systemd-sysext.service
systemd-timesyncd.service
systemd-userdbd.socket
systemd-sysupdate.timer
systemd-sysupdate-reboot.timer
systemd-journal-remote.socket
systemd-journal-gatewayd.socket
Sur un système de base, uniquement ces services peuvent t’intéresser :
  • systemd-networkd.service : Service réseau comme Network Manager, très pratique pour un "serveur", mais clairement moins pratique pour un PC portable avec du Wifi
  • systemd-resolved.service : Service pour la gestion DNS (principalement pour du cache). Si tu utilises Network Manager il est plutôt recommandé d'utiliser Dnsmasq
  • systemd-timesyncd.service : Pour la mise à l'heure automatique du PC via NTP : Je l'ai personnellement d'activé. Et on l'active via la commande timedatectl set-ntp 1
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [Question] Systemd

Message par papajoke »

benjarobin a écrit : dim. 19 mars 2023, 18:41Sérieusement chat-gpt ?
Pour moi, si il pose la question, c'est que la lecture du man pose justement un problème...

La même version 1000 fois plus rapide avec man

Code : Tout sélectionner

for s in $(systemctl list-unit-files --type=service | awk '/^systemd/ {print $1}'); do 
   echo -e "-------------------------\n${s^^}";
   systemctl cat "$s" | grep -E '^(Desc|Doc|Exec)';
   leman="$(systemctl cat $s | grep -E '^Documentation=man:')";
   leman=${leman:18};
   man -L fr "${leman%%(*}" | sed -n '/^DES*/,/^$/p'
   echo;
done;
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
dexter74
Daikyu
Messages : 53
Inscription : jeu. 28 oct. 2021, 20:24
Localisation : Annemasse

Re: [Question] Systemd

Message par dexter74 »

Bonjour,
L'utilitaire man me donne rien

man systemd-boot-update.service
Aucune entrée de manuel pour systemd-boot-update.service

Aurais je oublier des paquets ?
Note:

Code : Tout sélectionner

- Partition 1: FAT /boot
- Partition 2: LVM (/, /home, /Backup)
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [Question] Systemd

Message par papajoke »

tu n'as pas lu, ni vu mon script bash ? il donne justement les entrées dans le man :o
SYSTEMD-BOOT-UPDATE.SERVICE
-> Automatic Boot Loader Update
# man:bootctl(1)
# ExecStart=bootctl --no-variables --graceful update
Nous avons systemctl cat unité (ce que je fais avec les 2 scripts)

Code : Tout sélectionner

systemctl cat systemd-boot-update.service
...
Documentation=man:bootctl(1)
ExecStart=bootctl --no-variables --graceful update
et oui, cette unité ne fait qu'appeler "bootctl" et tu peux voir avec quelles options (documentées dans le man)

----------

Et à noter qu'il existe une doc officielle sur systemd. Par exemple, tu as dans ta liste systemd-homed, sur le site, on trouve pas mal de doc sur ce service généralement inutile pour nous (je suppose pour 99,9% des utilisateurs arch)

----------

Et avec man, on peut faire une recherche :wink:

Code : Tout sélectionner

man -k systemd-boot
loader.conf (5)      - Configuration file for systemd-boot
systemd-boot (7)     - A simple UEFI boot manager
systemd-boot-check-no-failures (8) - verify that the system booted up cleanly
systemd-boot-check-no-failures.service (8) - verify that the system booted up cleanly
systemd-boot-random-seed.service (8) - Refresh boot loader random seed at boot
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Question] Systemd

Message par benjarobin »

Sinon, encore plus simple :

Code : Tout sélectionner

systemctl help systemd-boot-update.service
Ou systemctl status systemd-boot-update.service qui affiche une ligne Docs:
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
dexter74
Daikyu
Messages : 53
Inscription : jeu. 28 oct. 2021, 20:24
Localisation : Annemasse

Re: [Question] Systemd

Message par dexter74 »

Bonjour,
Si j'ai vu ton script mais j'aimerai comprendre la raison de l'absence de retour de MAN chez moi.

Merci beaucoup pour ton script. (J'ai du mal à comprendre ton script en terme d'argument :( )
Note:

Code : Tout sélectionner

- Partition 1: FAT /boot
- Partition 2: LVM (/, /home, /Backup)
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [Question] Systemd

Message par papajoke »

il n'y a pas d'absence, c'est juste que tu ne sais pas où chercher (rien de nouveau:toutes nos commandes dans /usr/bin n'ont pas obligatoirement le même nom d'entrée dans man).

Comme dit plus haut, les commandes cat et status indiquent où chercher dans man l'(es) entrée(s) (parfois peuvent en plus indiquer des url).
Et si tu désires un accès plus simple, benjarobin vient de l'écrire dans le message précédent :roll: la commande help va lancer directement le bon man pour toi.


------------------
EDIT:

Une entrée qui référence les (381) mans concernant systemd
https://www.freedesktop.org/software/sy ... index.html
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Répondre