Page 1 sur 1
[systemd --user] Activer le .timer (Résolu)
Publié : mer. 22 févr. 2017, 12:04
par clapas
Bonjour,
Pour arrêter mon PC dans le cas où je ne l'aurais pas fait avant, je teste le lancement d'un script par une entrée dans crontab.
Le script est tout simple et fonctionne bien si je le lance en ligne de commande. Il est dans ce style :
Code : Tout sélectionner
#!/bin/bash
notify-send "blabla"
sleep 5
notify-send "shutdown -c dans un terminal stoppera le processus"
sleep 30
shutdown -P +0
exit0
La ligne de crontab est :
Et c'est ici que ça coince, le script se déclenche bien mais ne produit pas le résultat attendu.
J'ai cherché à exploiter d'éventuels messages d'erreur dans un fichier cron.log. Le fichier se fabrique bien et se rempli après exécution de cron mais il est illisible par un éditeur de texte.
Merci pour vos conseils pour poursuivre la recherche des erreurs.
Re: [crontab] Ne déroule pas tout le script lancé.
Publié : mer. 22 févr. 2017, 12:23
par papajoke
avec systemd timer --user , je n'utilise plus de cron depuis longtemps
Re: [crontab] Ne déroule pas tout le script lancé.
Publié : mer. 22 févr. 2017, 12:49
par benjarobin
Non, l'export n'est pas forcément suffisant si lancé depuis un crontab en root. Mais en effet le faire via un timer user systemd est sûrement plus propre.
Re: [crontab] Ne déroule pas tout le script lancé.
Publié : jeu. 23 févr. 2017, 08:49
par clapas
Merci pour ces conseils.
Je suis donc passé par systemd --user, mais il reste un point à régler :
Le script jeferme.sh est bon
Le service et le timer sont aussi bons, vu que si je lance :
Tout se déroule comme attendu.
Mais après avoir fait
si je demande
la réponse est "0 timers listed"
son status est .
Code : Tout sélectionner
systemctl --user status jeferme.timer
● jeferme.timer - Fermer la machine
Loaded: loaded (/home/clapas/.config/systemd/user/jeferme.timer; enabled; vendor preset: enabled)
Active: inactive (dead)
Pouvez-vous m'indiquer quelle est la bonne méthode pour que ce jeferme.timer soit activé dès le démarrage de la machine sans avoir à faire un "start".
Re: [crontab] Ne déroule pas tout le script lancé.
Publié : jeu. 23 févr. 2017, 08:53
par benjarobin
Quel est le contenu de jeferme.timer et de jeferme.service et tu les as placé où ?
En plus peux tu donner la sortie de :
Re: [crontab] Ne déroule pas tout le script lancé.
Publié : jeu. 23 févr. 2017, 20:54
par clapas
Voilà le retour :
Code : Tout sélectionner
[clapas@ds81 ~]$ systemctl --user cat jeferme.timer jeferme.service
# /home/clapas/.config/systemd/user/jeferme.timer
[Unit]
Description=Fermer la machine
[Timer]
OnCalendar=*-*-* 23:50:00
Persistent=true
Unit=jeferme.service
[Install]
WantedBy=jeferme.service
# /home/clapas/.config/systemd/user/jeferme.service
Unit]
Description=On ferme la machine
[Service]
Environment=DISPLAY=:0
ExecStart=/home/clapas/jeferme.sh
[Install]
WantedBy=basic.target
[clapas@ds81 ~]$
Re: [systemd --user] Activer le .timer
Publié : jeu. 23 févr. 2017, 21:53
par benjarobin
Oula cela ne va pas vraiment, il y a plein d'erreur et de faute de frappe...
Désactive le timer avant, supprime tout trace de
jeferme
...
Remplace les fichiers par ce que je donne
/home/clapas/.config/systemd/user/jeferme.timer
Code : Tout sélectionner
[Unit]
Description=Fermer la machine
[Timer]
OnCalendar=*-*-* 23:50:00
Persistent=true
[Install]
WantedBy=default.target
/home/clapas/.config/systemd/user/jeferme.service
Code : Tout sélectionner
[Unit]
Description=On ferme la machine
[Service]
Environment=DISPLAY=:0
ExecStart=/home/clapas/jeferme.sh
Puis
Code : Tout sélectionner
systemctl --user daemon-reload
systemctl --user enable jeferme.timer
Re: [systemd --user] Activer le .timer
Publié : ven. 24 févr. 2017, 08:04
par clapas
Merci Benjarobin pour toutes ces informations.
Effectivement, à force de copier coller, j'avais omis un crochet ouvrant à [unit] de jeferme.service. Mais cela n'empêche pas le service de fonctionner
Par contre, ce qui me manquait c'était de recharger, après modification en faisant les tests.
J'ai adopté ta version du service et du timer car elle est plus simple et certainement plus conforme, mais mon ancienne version fonctionne aussi.
Re: [systemd --user] Activer le .timer (Résolu)
Publié : dim. 26 févr. 2017, 09:22
par clapas
Correction sur la valeur de Persistent=
Dans ce cas, il faut Persistent=false sinon le service peut être activé quand il ne le faut pas. En effet, avec "true", si la machine est éteinte avant l'heure de déclenchement, alors le service "rattrapera son retard" dès le prochain démarrage. résultat : le PC s'éteindra dès son démarrage
