Systemd : Père de tous les autres processus
Un système Linux, et tout autre *nix, démarre toujours un processus qui est le père de tous les autres processus. Lorsque vous utilisez Systemd, ce processus est systemd, le processus est toujours appelé 'init' quel que soit le système d'initialisation. Une fois que systemd est en cours d'exécution, il démarre les démons qui exécutent les sous-systèmes. Les démons contrôlent les ressources dont vous disposez et les systèmes ouverts. Votre invite de connexion est un service géré par systemd. Systemd démarre de nombreux autres services et monte également tous vos disques, y compris les montages instantanés.
Comment contrôlez-vous ce qui commence?
Tout d'abord, le premier système d'initialisation avait des niveaux d'exécution que de nombreux lecteurs reconnaîtront. Le niveau d'exécution 1 était le mode mono-utilisateur, 2 le mode multi-utilisateur sans réseau et 3-5 multi-utilisateur et graphique. Définir le niveau d'exécution à 0 signifiait un arrêt et 6 signifiait un redémarrage. Les développeurs de systemd ont trouvé que ces niveaux n'étaient pas clairs et les ont donc changés pour être appelés cibles. Les cibles ne sont pas exactement les mêmes mais ont une fonction similaire. Lorsqu'une cible spécifique est en cours d'exécution, une collection spécifique d'unités est en cours d'exécution. Plus sur les unités plus tard.
Définition du « niveau d'exécution », appelé cible.
Vous pouvez modifier la cible pendant l'exécution, par exemple, vous pouvez utiliser un terminal pour définir votre cible sur multi-utilisateur. Cela arrêterait votre interface graphique, X ou Wayland mais vous permettrait, ainsi qu'à d'autres, de vous connecter avec une console de texte. Utilisez la commande suivante.
$ systemctl isoler multi-utilisateur.cibleOu, si vous souhaitez démarrer votre bureau, utilisez plutôt la commande suivante.
$ systemctl isoler graphique.cibleCe qui vous intéresse vraiment, c'est comment commencer le bon niveau, vous pouvez découvrir ce que vous avez en ce moment de cette façon.
$ systemctl get-defaultPour changer la valeur par défaut, définissez-la.
$ systemctl set-default graphique.cibleCette commande fait démarrer de nombreuses unités et services lorsque vous démarrez votre ordinateur. Vous voudrez peut-être démarrer ou arrêter un seul service cependant.
DÉMARRER, arrêter, activer et désactiver un service.
C'est là que vous avez la possibilité de changer ce qui se passe au démarrage et pendant le fonctionnement normal. Contrairement aux cibles, les unités sont spéciales pour un service particulier. Pour arrêter un service, vous utilisez 'systemctl stop', vous pouvez également utiliser 'start' et 'restart'. Pour faire démarrer un service au démarrage, vous utilisez 'activer', pour l'arrêter 'désactiver'. Choisissez un service, démarrez-le et arrêtez-le pendant son exécution.
$ systemctl status cups.un serviceCette commande affiche l'état du service, elle affiche également une liste des actions entreprises par le système concernant le service. Pour arrêter le service, utilisez la commande ci-dessous.
$ systemctl arrêter les gobelets.un serviceLe service est maintenant arrêté pour votre session en cours. Pour le changer pour qu'il ne démarre pas au prochain démarrage, utilisez disable.
$ systemctl désactiver les tasses.un serviceNotez que vous ne pouvez que désactiver le service, cela n'aura aucun effet sur votre situation actuelle. Le service continue de fonctionner. Au prochain démarrage cependant, il ne démarrera pas le service.
Systemd contrôle également les supports, les périphériques, les sockets et plus encore. Les unités sont plus basses et plus faciles à comprendre, si vous avez déjà eu affaire à Linux. Vous pouvez également les définir vous-même, mais le plus grand effet sur le démarrage est de contrôler les services.
Comment ajouter vos propres scripts?
Vous pouvez ajouter vos propres scripts assez facilement, les détails qu'il est intéressant de connaître sont de savoir comment vous faites dépendre votre script ou service des autres. Ceci est clairement démontré dans ce fichier de service de reprise wifi.
[Unité]Description=Redémarrer le gestionnaire de réseau à la reprise
Après=suspendre.cible
Après = hiberner.cible
Après=sommeil hybride.cible
[Un service]
Type=oneshot
ExecStart=/bin/systemctl redémarrer le gestionnaire de réseau.un service
[Installer]
WantedBy=suspendre.cible
WantedBy=hiberner.cible
WantedBy=sommeil hybride.cible
Ce code crée un service qui se produit une fois (oneshot) après les trois cibles mentionnées dans le code. Le code qui est exécuté est dans ce cas une seule commande. Vous pouvez tout aussi bien pointer ExecStart vers un script de votre choix.
Conclusion
Changer votre système, notamment comment il démarre, vous pouvez le faire vous-même mais attention cela a de nombreuses conséquences pour chaque service alors assurez-vous que votre code est stable et rapide à exécuter.