Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:programmation:bash:script:systemd:script-sur-un-vt [05/02/2016 09:23] smolski |
doc:programmation:bash:script:systemd:script-sur-un-vt [11/06/2024 16:52] (Version actuelle) agp91 [Script de démarrage pour systemd] Correction type par Type |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Niveau requis : {{tag>avisé}} | * Niveau requis : {{tag>avisé}} | ||
* Commentaires : Depuis le passage de INIT à SystemD certaines choses simples sont devenues plus complexes \\ comment j'en suis arrivé là : j'ai voulu afficher sur le tty1 de mes machines virtuelles leur adresse ipv4 au lieu de l'écran de login habituel | * Commentaires : Depuis le passage de INIT à SystemD certaines choses simples sont devenues plus complexes \\ comment j'en suis arrivé là : j'ai voulu afficher sur le tty1 de mes machines virtuelles leur adresse ipv4 au lieu de l'écran de login habituel | ||
- | * Suivi : {{tag>à-tester}} | + | * Suivi : |
* Création par [[user>greenmerlin]] 25/01/2016 | * Création par [[user>greenmerlin]] 25/01/2016 | ||
- | * Commentaires sur le forum : [[ https://debian-facile.org/viewtopic.php?pid=159703| Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | + | * Testé par [[user>agp91]] le 08/06/2024 |
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=159703| Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
===== Introduction ===== | ===== Introduction ===== | ||
Depuis le changement d'INIT à SystemD beaucoup d'entre nous ont dû réapprendre... des choses simples que faisait /etc/inittab à la sauce SystemD. | Depuis le changement d'INIT à SystemD beaucoup d'entre nous ont dû réapprendre... des choses simples que faisait /etc/inittab à la sauce SystemD. | ||
Ligne 18: | Ligne 19: | ||
Bon on commence par le plus simple : | Bon on commence par le plus simple : | ||
- | Pour plus de commodité j'enregistre toujours mes scripts perso dans /etc/bin, donc la je le créer dans /etc/bin/show_my_ip.sh | + | Je crée le script dans /usr/local/bin/show_my_ip.sh |
<file bash show_my_ip.sh> | <file bash show_my_ip.sh> | ||
- | #! /bin/sh | + | #!/bin/sh |
clear | clear | ||
while true; | while true; | ||
Ligne 34: | Ligne 35: | ||
Ce script Bash va afficher en continue l'adresse ipv4 des différentes interfaces réseau. | Ce script Bash va afficher en continue l'adresse ipv4 des différentes interfaces réseau. | ||
- | <note important>ne pas oublier de le rendre éxécutable : <code user>chmod +x mon_script.sh</code></note> | + | <note important>ne pas oublier de le rendre exécutable : <code root>chmod +x /usr/local/bin/show_my_ip.sh</code></note> |
Ensuite, vu que je veux afficher ce script sur mon tty1 il va falloir que je dise à SystemD d’arrêter de lancer agetty FIXME(expliquer) sur le tty1. | Ensuite, vu que je veux afficher ce script sur mon tty1 il va falloir que je dise à SystemD d’arrêter de lancer agetty FIXME(expliquer) sur le tty1. | ||
===== Configuration de SystemD ===== | ===== Configuration de SystemD ===== | ||
Ligne 43: | Ligne 44: | ||
<code>1:2345:respawn:/etc/bin/mon_script.sh</code> | <code>1:2345:respawn:/etc/bin/mon_script.sh</code> | ||
=== Maintenant === | === Maintenant === | ||
- | Maintenant avec SystemD, un seul getty est lancé par défaut. Si vous vous déplacez sur un autre tty(Ctr+Alt+F2 par exemple), getty sera lanceé ici (de manière interactive). | + | Maintenant avec SystemD, un seul getty est lancé par défaut. Si vous vous déplacez sur un autre tty(<key>C-A-F2</key> par exemple), getty sera lancé ici (de manière interactive). |
- | Pour modifier ce comportement par défaut de **SystemD** il faut éditer le fichier <code>/etc/systemd/logind.conf</code> | + | Pour modifier ce comportement par défaut de **SystemD** il faut désactiver le service qui exécute getty sur tty1 |
- | Puis dé-commenter NAutoVTs=6 et placer sa valeur à zéro. | + | <code root>systemctl disable getty@tty1.service</code> |
- | ça devrait vous donner un fichier comme ça | + | |
- | <file config /etc/systemd/logind.conf> | + | |
- | # This file is part of systemd. | + | |
- | # | + | |
- | # systemd is free software; you can redistribute it and/or modify it | + | |
- | # under the terms of the GNU Lesser General Public License as published by | + | |
- | # the Free Software Foundation; either version 2.1 of the License, or | + | |
- | # (at your option) any later version. | + | |
- | # | + | |
- | # See logind.conf(5) for details | + | |
- | + | ||
- | [Login] | + | |
- | NAutoVTs=0 | + | |
- | #ReserveVT=6 | + | |
- | #KillUserProcesses=no | + | |
- | #KillOnlyUsers= | + | |
- | ... | + | |
- | </file> | + | |
Ensuite on lui dit de démarrer quand même un login sur le tty2, pour ce faire : | Ensuite on lui dit de démarrer quand même un login sur le tty2, pour ce faire : | ||
- | <code root>systemctl disable getty@tty1.service</code> | ||
- | Puis : | ||
<code root> systemctl enable getty@tty2.service</code> | <code root> systemctl enable getty@tty2.service</code> | ||
===== Script de démarrage pour systemd ===== | ===== Script de démarrage pour systemd ===== | ||
- | Il va falloir créer un script de démarrage pour SystemD afin de lancer notre script sur le tty1 | + | Il va falloir créer un script de démarrage pour SystemD (/etc/systemd/system/show_my_ip.service) afin de lancer notre script sur le tty1 |
<note tip>cela correspondait aux scripts présents sous /etc/init.d/ sous INIT</note> | <note tip>cela correspondait aux scripts présents sous /etc/init.d/ sous INIT</note> | ||
<file config /etc/systemd/system/show_my_ip.service> | <file config /etc/systemd/system/show_my_ip.service> | ||
Ligne 78: | Ligne 59: | ||
[Service] | [Service] | ||
- | type=idle | + | Type=idle |
- | ExecStart=/etc/bin/show_my_ip.sh | + | ExecStart=/usr/local/bin/show_my_ip.sh |
StandardOutput=tty | StandardOutput=tty | ||
TTYPath=/dev/tty1 | TTYPath=/dev/tty1 | ||
Ligne 90: | Ligne 71: | ||
* description de l'unit qu'est-ce que ça fait,etc... :<code>Description=Afficher mon ip avec systemd </code> | * description de l'unit qu'est-ce que ça fait,etc... :<code>Description=Afficher mon ip avec systemd </code> | ||
- | * systemd va retarder l'exécution du service jusqu'à ce que tous les autres soient finis :<code>type=idle </code> | + | * systemd va retarder l'exécution du service jusqu'à ce que tous les autres soient finis :<code>Type=idle </code> |
* la ligne de commande à exécuter :<code>ExecStart=/bin/bash /etc/show_my_ip.sh </code> | * la ligne de commande à exécuter :<code>ExecStart=/bin/bash /etc/show_my_ip.sh </code> | ||
* spécifier où va la sortie "standard du script" ou peut l'afficher dans les log, un tty, ou pas l'afficher du tout :<code> StandardOutput=tty</code> | * spécifier où va la sortie "standard du script" ou peut l'afficher dans les log, un tty, ou pas l'afficher du tout :<code> StandardOutput=tty</code> | ||
Ligne 97: | Ligne 78: | ||
* c'est un script que l'usager demande **obligatoire** :<code>WantedBy=multi-user.target</code> | * c'est un script que l'usager demande **obligatoire** :<code>WantedBy=multi-user.target</code> | ||
- | Dernière phase : \\ | + | Dernière phase : J'active au démarrage le nouveau service show_my_ip.service : |
- | je modifie les droits de mon script SystemD puis je l'active au démarrage : | + | <code root>systemctl enable show_my_ip.service</code> |
- | <code root>chmod 755 /etc/systemd/system/show_my_ip.service;systemctl enable show_my_ip</code> | + | |
Et voilà ! un petit reboot et à la place de l’écran de login habituel sur le tty1 vous verrez l'exécution de votre script | Et voilà ! un petit reboot et à la place de l’écran de login habituel sur le tty1 vous verrez l'exécution de votre script | ||
===== Résultat ===== | ===== Résultat ===== |