Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ?

En ligne

#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

En ligne

#6 Le 22/05/2019, à 17:36

checksys

Re : [Résolu] Script et systemd

bruno a écrit :

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

bruno a écrit :

Pourquoi ces lignes :

User=root
ExecStart=

le user est obligatoire non ?

bruno a écrit :

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...

bruno a écrit :

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 wink

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

kholo a écrit :

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 big_smile

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 !!!

LeoMajor a écrit :

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 big_smile
... 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