Pages : 1
#1 Le 22/05/2019, à 16:18
- checksys
[Résolu] Script et systemd
Bonjour,
J'ai créé un service truc.service dans systemd qui fonctionne en partie. A chaque redémarrage de ma machine pour une raison que j'ignore pour l'instant le service n'est ni actif, ni failed, il est gris. La n'est pas le problème, si je fais un restart tout rentre dans l'ordre mais le restart est pénible et me demande un mot de passe à chaque fois.
Ma question est la suivante: est il possible de scripter ce reboot de service avec le password ?
Merci.
Dernière modification par checksys (Le 31/05/2019, à 10:05)
Hors ligne
#2 Le 22/05/2019, à 16:40
- bruno
Re : [Résolu] Script et systemd
Bonjour,
Explique nous comment tu as créé ce service : où est le fichier truc.service et ce qu'il contient. As-tu bien pensé à activer le service ?
#3 Le 22/05/2019, à 16:50
- checksys
Re : [Résolu] Script et systemd
Alors j'ai fait nano /etc/systemd/system/truc.service ensuite j'ai mis dans ce fichier les infos suivantes:
[Unit]
Description=Truc interessant
After=networking.service
[Service]
Type=forking
User=root
ExecStart=
ExecStart=/etc/init.d/truc start
Restart=on-failure
# Configuration du timeout
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
Alias=truc
Ensuite j'ai fait:
systemctl daemon-reload
systemctl enable truc.service
systemctl start truc.service
--
Modération : ajout des balises code.
Dernière modification par bruno (Le 22/05/2019, à 17:10)
Hors ligne
#4 Le 22/05/2019, à 17:16
- diesel
Re : [Résolu] Script et systemd
Deux ligne "ExecStart=", c'est déjà une de trop.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#5 Le 22/05/2019, à 17:20
- bruno
Re : [Résolu] Script et systemd
Pourquoi ton script est-il dans /etc/init.d ?
ExecStart=/etc/init.d/truc start
Je rappelle que systemd est compatible avec l'ancien système d'init. Donc si ton script est déjà lié dans un des niveaux d'exécution se SysInit tu n'as pas besoin de créer une unité de service systemd.
Pourquoi ces lignes :
User=root
ExecStart=
Et pourquoi :
Type=forking
Il fait quoi ton script truc ?
Sinon, vérifie que ton unité de service est bien activée :
systemctl is-enabled truc
Et retour, quand ton service ne veut pas démarrer de :
systemctl status truc
et
journalctl -u truc
#6 Le 22/05/2019, à 17:36
- checksys
Re : [Résolu] Script et systemd
Pourquoi ton script est-il dans /etc/init.d ?
ExecStart=/etc/init.d/truc start
Je rappelle que systemd est compatible avec l'ancien système d'init. Donc si ton script est déjà lié dans un des niveaux d'exécution se SysInit tu n'as pas besoin de créer une unité de service systemd.
C'était pour gérer le start/stop que j'ai créé le fichier de script /etc/init.d/truc mais je vais tenter sans du coup c'est peut être mieux
Pourquoi ces lignes :
User=root ExecStart=
le user est obligatoire non ?
Et pourquoi :
Type=forking
Il fait quoi ton script truc ?
forking, j'avais lu dans le manuel qu'il fallait un type, je t'avoue avoir pris le premier venu...
Sinon, vérifie que ton unité de service est bien activée :
systemctl is-enabled truc
Et retour, quand ton service ne veut pas démarrer de :
systemctl status truc
et
journalctl -u truc
Oh le boulet !!! mon service était disable, je fais quelques reboot et je vous tiens au courant.
Merci bruno
Hors ligne
#7 Le 24/05/2019, à 10:27
- checksys
Re : [Résolu] Script et systemd
Bon finalement je n'ai plus le bug au démarrage (merci bruno), par contre, il arrive que le socket plante en cours d'utilisation, comment je peux scripter un restart du service ?
Hors ligne
#8 Le 27/05/2019, à 14:31
- checksys
Re : [Résolu] Script et systemd
personne ? Je suis coincé avec cette demande de mot de passe au restart
Hors ligne
#9 Le 27/05/2019, à 15:59
- checksys
Re : [Résolu] Script et systemd
Si j'ajoute systemd aux sudoers ?
Hors ligne
#10 Le 27/05/2019, à 18:06
- kholo
Re : [Résolu] Script et systemd
salut, j'ai commencé systemd la semaine dernière et j'y ai donc passé la semaine...
mais, d'abord j'ai mis mes scripts dans /lib/systemd/system (surtout parce que c'est là que j'ai trouvé les autres services !)
ensuite j'ai utilisé la fonction de timer qui permet de faire comme avec cron et même plus...
je n'ai pas touché aux droits
-rw-r--r-- 1 root root 369 mai 16 17:28 myprinter.service
-rw-r--r-- 1 root root 356 mai 16 22:37 myprinter.timer
à titre d'exemple :
myprinter.service
[Unit]
Description=Initilise le service myprinter qui envoie des infos dans un fichier
After=network-online.target
[Service]
Type=simple
User=pi
Group=pi
Restart=on-failure
#RemainAfterExit=yes
ExecStart=/opt/myprinter/main.sh
NB : /opt/myprinter appartient à root
mais son contenu appartient à mon utilisateur !
mais je vais potasser à faire ça plus proprement
cela dit il serait à root qu'il suffirait d'y mettre les droits d'exec pour tout le monde !
et mon timer :
myprinter.timer
[Unit]
Description=Timer pour myprinter
[Timer]
Unit=myprinter.service
OnBootSec=3min
## “minutely”, “hourly”, “daily”, “monthly”, “weekly”, “yearly”, “quarterly”, “semiannually”
##OnCalendar=hourly
OnCalendar=*:0,15,30,45
##OnCalendar=daily
##OnCalendar=*-*-* 16:05:00
Persistent=true
[Install]
WantedBy=timers.target
je laisse les indications commentées
pour le reste Bruno a parfaitement expliqué... et tu dois commencer à piger
faire un
systemctl daemon-reload
systemctl enable truc.service
systemctl start truc.service
sauf pour mon cas où il faut activer le timer et le service puisque c'est le timer qui déclenche le service...
et zieuter si tout est ok
systemctl status truc.service
Hors ligne
#11 Le 28/05/2019, à 10:34
- checksys
Re : [Résolu] Script et systemd
Merci, ces informations vont me permettre de revoir la configuration de mes services.
Le problème que je rencontre ne se gère malheureusement pas avec une configuration optimisée des services. Quand le socket tombe, le service est toujours actif, ce qui n'enclenche aucune action. Il faut donc obligatoirement un restart manuel du service en question. Seulement je ne parviens pas a le scripter sans une demande de mot de passe systématique.
Hors ligne
#12 Le 28/05/2019, à 11:54
- kholo
Re : [Résolu] Script et systemd
alors, ça dépend, ça dépasse...
si tu es maître du service que tu crées pourquoi vouloir faire un restart ?
par exemple, j'ai avancé sur un service qui concerne les imprimantes en réseau donc cela suppose que le réseau soit fonctionnel et que l'imprimante soit accessible... pas la peine de relancer le service si dans mon sous script c'est lui qui vérifie que les conditions sont remplient et prend une décision en conséquence...
le fait que ce soit systemd qui s'occupe de ce service est uniquement si son process tombe, il sera relancé...
Hors ligne
#13 Le 28/05/2019, à 13:12
- checksys
Re : [Résolu] Script et systemd
alors, ça dépend, ça dépasse...
si tu es maître du service que tu crées pourquoi vouloir faire un restart ?
par exemple, j'ai avancé sur un service qui concerne les imprimantes en réseau donc cela suppose que le réseau soit fonctionnel et que l'imprimante soit accessible... pas la peine de relancer le service si dans mon sous script c'est lui qui vérifie que les conditions sont remplient et prend une décision en conséquence...
le fait que ce soit systemd qui s'occupe de ce service est uniquement si son process tombe, il sera relancé...
Clairement par fainéantise, effectivement, si je revois mon script, je peux vérifier l'ouverture du socket et le cas échéant fermer le service.
J'ai beau chercher partout je ne vois vraiment pas pourquoi c'est autant verrouillé cette histoire de restart.
Hors ligne
#14 Le 28/05/2019, à 21:55
- kholo
Re : [Résolu] Script et systemd
systemd est bétonné car il a été créé pour gérer des services système...
après qu'il ai évolué et qu'on puisse le détourner c'est autre chose...
déjà il peut lancer du binaire ou du script et c'est seulement son taf... d'où la limite de ses prérogatives : lancer, arrêter, relancer, donner le statut et quelques autres bricoles mais qu'il faut déclarer dans le script du service (les dépendances, l'ordre, le moment du lancement ou la périodicité... et sans doute d'autres trucs que j'ai pas encore approfondi).
donc vois le comme un simple lanceur et gérant du bon lancement mais ce n'est pas à lui de voir si tous les services sous-jacent sont tout le temps satisfaits sinon il deviendrait vite une usine à gaz.
ce pourquoi je te conseil de voir pour gérer la satisfaction des dépendances en interne dans ton scrip en ajoutant des conditions avec un "after"... tout en travaillant sur l'attente de ton script d'avoir à chaque instant certaines dépendances qui restent d'actualité... peut être un autre service pour s'occuper de ça en parallèle...
par exemple, j'avais LMS en service (logitech media serveur pour faire du multiroom) et quand je m'amusais à faire un kill sur le programme résident, rapidement il était relancé en automatique... ce serait un antivirus que ce serait pareil !
Hors ligne
#15 Le 29/05/2019, à 09:14
- checksys
Re : [Résolu] Script et systemd
Merci Kholo, je crois effectivement que je ne dérogerai pas à une refonte complète. Je vais tout de même jeter un oeil à LMS, on ne sait jamais, et faire quelques tests.
Hors ligne
#16 Le 31/05/2019, à 10:04
- checksys
Re : [Résolu] Script et systemd
Bon la fainéantise ca paye, j'ai résolu mon problème avec PolicyKit
Hors ligne
#17 Le 31/05/2019, à 13:35
- kholo
Re : [Résolu] Script et systemd
tiens... tu as donc réglé la partie concernant les droits...
bon, ... l'important est que tu t'y retrouves !
Hors ligne
#18 Le 01/06/2019, à 13:40
- LeoMajor
Re : [Résolu] Script et systemd
bonjour,
systemd a introduit les services "maison", sous le home de l'utilisateur, avec potentiellement une variante Linger
service de type systemctl --user ... foo.service
si loginctl show-user $USER -p Linger renvoie yes, alors le service a le comportement suivant : " ...If enabled for a specific user, a user manager is spawned for the user at boot and kept around after logouts. This allows users who are not logged in to run long-running services ..."
Dernière modification par LeoMajor (Le 01/06/2019, à 13:41)
Hors ligne
#19 Le 01/06/2019, à 17:49
- kholo
Re : [Résolu] Script et systemd
wouah, LeoMajor, j'ai un oeil qui saigne !!!
une variante Linger service
il a fallu que je relise 3 fois outre le fait de devoir traduire mot à mot à la volée !
... et pourtant j'en bouffe matin, midi et soir du doc technique en grand breton !
ceci dit si j'ai tout compris...
si un service est prévu pour fonctionner avec root (donc pas d'utilisateur renseigné dans le fichier .service)
on doit pouvoir le lancer au niveau d'un utilisateur en le déclarant...
euh où "mes tétons" ce lancement ?
parce que... pas dans autostart...
ou faut le lancer à la pogne ? via ssh par exemple ? ou dans un screen ?
et si tu nous faisais une petite démo
... parce que tu m'intéresses là et tu as piqué ma curiosité !
Hors ligne
#20 Le 03/06/2019, à 08:49
- checksys
Re : [Résolu] Script et systemd
C'est intéressant et potentiellement moins bourrin que ce que j'ai fait. Je suis également curieux d'en savoir un peu plus sur la manière dont tu déclares le périmètre.
Hors ligne