Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

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.

#1 Le 14/11/2017, à 21:02

Skyroots

rtcwake : automatiser le réveil du lundi au vendredi

Bonjour,

Pour me réveiller, je souhaite démarrer l'ordi avec rtcwake puis lancer une piste audio.
Pour cela, je veux éviter de lancer la commande rtc la veille ou avant avec la date précise car ce serait fastidieux à la longue.
J'aimerais paramétrer rtcwake pour qu'il démarre l'ordi tous les jours de lundi à vendredi, toutes les semaines de l'année.

En lisant la doc et les forums, j'ai vu qu'à la place de la date précise on peut utiliser "tomorrow" ou encore "monday"/"tuesday"... etc mais cela ne le lance que pour le "prochain lundi"/"prochain mardi" etc. Donc qu'une seule fois, alors qu'il faudrait qu'il le fasse tous les lundis, tous les mardis, etc

Voici la commande qui marche pour une date précise:

/usr/sbin/rtcwake --auto --mode no --time $(date +%s -d "11/14/2017 55:19:00")

Auriez-vous une idée de comment arriver à mes fins ?

Merci par avance pour vos réponses !!

Hors ligne

#2 Le 14/11/2017, à 23:34

Ambigua

Re : rtcwake : automatiser le réveil du lundi au vendredi

Salut !

J'avais fait un truc comme ça, mais pas avec rtcwake, je ne me souviens plus quel programme qui permettait de lancer n'importe quoi comme si c'était tapé en ligne de commande à date & heure définie.

J'ai fait un script qui se lançait au démarrage et qui récupérait la date et l'heure actuelle et qui programmait le prochain "réveil".

Donc si on était mardi 9:32, il disait: prochain réveil mercredi 7:00 et en série, il y avait actualisation du script au moment de l’exécution du réveil pour préparer le prochain...
Même si on arrêtait le PC, au prochain démarrage, il se "reprogrammait" tout seul.
Mon script a fonctionné pendant des mois sans problème... jusqu'à ce qu'on trouve une autre méthode pour ajouter une tâche automatisée dans le programme propriétaire de la machine en question.

Cela peut t'aider à trouver une piste pour trouver la façon de faire.


A+

Florent

Hors ligne

#3 Le 15/11/2017, à 00:35

Watael

Re : rtcwake : automatiser le réveil du lundi au vendredi

salut,

avec cron...


eval, c'est mal.

Hors ligne

#4 Le 15/11/2017, à 00:52

Ambigua

Re : rtcwake : automatiser le réveil du lundi au vendredi

En effet, avec CRON c'est possible

https://doc.ubuntu-fr.org/cron


A+

Florent

Hors ligne

#5 Le 15/11/2017, à 01:35

Skyroots

Re : rtcwake : automatiser le réveil du lundi au vendredi

Merci pour vos réponses, Alors en fait, je rencontre plusieurs problèmes avec cron pour ça.

1/ je n’arrive pas à exécuter la commande rtcwake avec cron. Je ne sais pas pourquoi mais j’ai fait des tests et ça ne fait rien. Par exemple, je lance la commande suivante (dans sudo crontab) à 22:00 pour qu’elle s’exécute à 22:02, j’éteins manuellement mon pc à 22:05 pour voir si la commande a été prise en compte :

02 22 * * * /usr/sbin/rtcwake --auto --mode no --time $(date +%s -d "11/14/2017 10:22:00")

Malheureusement à 22:10 l’ordi ne redémarre pas donc ça n’a pas fonctionné.


2/ Imaginons que j’arrive à le faire fonctionner avec cron. Cool. Je peux remplacer la date par « tomorrow », et alors il se reprogramme tout seul pour le lendemain. Mais… ce n’est pas un réveil sécurisé.

En effet, si pour une raison je ne dois pas me lever tôt un jour, je ne veux pas de réveil et pour ça je débranche le pc (qui ne démarrera pas). Dans ce cas, il ne se sera pas regrogrammé et je devrai aller le relancer sur mon pc manuellement pour le jour qui suit. Si j’oublie de le faire…

Pareil, le samedi et dimanche je débrancherai mon pc, et donc chaque dimanche je devrai le reprogrammer manuellement car le dimanche matin il ne se sera pas reprogrammé pour le lundi matin. Il me faut donc une manière de programmer qui puisse prendre en compte les interruptions de jour de réveil… ou alors programmer pour un réveil tous les jours sans auto-reprogrammation… comme ça j’ai juste à débrancher ou rebrancher quand je veux…

Hors ligne

#6 Le 15/11/2017, à 02:02

Watael

Re : rtcwake : automatiser le réveil du lundi au vendredi

c'est les %, il faut les protéger :

02 22 * * * /usr/sbin/rtcwake --auto --mode no --time $(date +\%s -d "11/14/2017 10:22:00")

en plusieurs lignes, indiquant le numéro du jour de la veille du réveil, ou celui du vendredi pour le lundi...


eval, c'est mal.

Hors ligne

#7 Le 15/11/2017, à 02:10

Ambigua

Re : rtcwake : automatiser le réveil du lundi au vendredi

Avec CRON, si tu lui dis "tous les lundis", ce sera tous les lundis ( même le lundi de Pâques tongue )

Pas besoin de reprogrammer...

De mémoire, CRON se lance tout seul au démarrage du serveur LAMP.

Par contre, il faut que ton PC soit en marche et non éteint, car là, ça ne marchera pas...

Qu'entends-tu par PC éteint ? En veille ? ou écran en veille ? ou réellement arrêté ?


A+

Florent

Hors ligne

#8 Le 15/11/2017, à 02:34

MicP

Re : rtcwake : automatiser le réveil du lundi au vendredi

Bonsoir

Dans ta ligne de tâche cron
il te faudrait peut-être mettre le chemin absolu de la commande date

Dernière modification par MicP (Le 15/11/2017, à 02:35)

Hors ligne

#9 Le 15/11/2017, à 18:46

Skyroots

Re : rtcwake : automatiser le réveil du lundi au vendredi

Bonsoir et merci pour vos messages,

@watael : j'ai essayé comme écrit avec un \% mais ça ne marche toujours pas...
@ambigua: avec cron oui mais pas avec rtcwake. Et pour que cron programme le rtcwake du lendemain, il faut qu'il soit allumé à l'heure de son lancement dans crontab, et c'est bien ça le problème... Si je n'allume pas le pc de la journée ou alors à une autre heure que celle précisée dans crontab, alors la commande ne sera pas lancée... et donc pas de réveil le lendemain...

J'avais pensé à lancer plusieurs lignes de commandes, une pour chaque jour comme, du style rtcwake monday, rtcwake tuesday, rtcwake wednesday, rtcwake thursday, rtcwake friday. A chaque fois il faut comprendre "next monday", "next tuesday", etc. Pour que ça marche et reprogramme pour toute la semaine suivante, il faut qu'il s'allume à la bonne heure de lancement des jobs dans crontab au moins une fois par semaine.

@MicP: Hum c'est à explorer... mais je ne sais pas comment indiquer le chemin d'une date ? comment trouver le chemin? Aussi, le but sera in fine de remplacer la date par "monday", "tuesday", etc. Est-ce possible d'y mettre son chemin absolu du style "/xx/xx/xx/monday"?

Merci à tous par avance !!
bonne soirée

Hors ligne

#10 Le 16/11/2017, à 10:27

MicP

Re : rtcwake : automatiser le réveil du lundi au vendredi

Bonjour

Je parlais du chemin absolu de la commande date

Ce chemin absolu peut être retourné par la commande :

which date

ce qui donne, sur ma machine :

michel@debg53sw:~$ which date
/bin/date
michel@debg53sw:~$ 

Mais de toutes façons, ce n'est peut-être pas le plus important
puisqu'il te faudrait sans doute avoir les privilèges du compte root
pour que la commande rtcwake puisse accéder à la RTC

=======
Il vaudrait mieux mettre la commande de programmation de l'heure de démarrage
dans un script qui sera lancé avec les privilèges du compte root
au démarrage et à l'arrêt de la machine

sinon, un arrêt manuel avant l'heure à laquelle la tâche cron sera exécutée
ne permettra pas la reprogrammation de l'heure de démarrage suivant.

=======
Le script lancé au démarrage et à l'arrêt de la machine devra alors

Tester jour de semaine actuel.
Si le jour de semaine actuel est samedi ou dimanche
    Alors programmer avec rtcwake un redémarrage pour le lundi suivant à 08:00
  Sinon
    Tester l'heure actuelle.
    Si l'heure actuelle est avant 08:00
        Alors Programmer avec rtcwake un redémarrage pour le jour même à 08:00
      Sinon
         Programmer avec rtcwake un redémarrage pour le lendemain à 08:00

Et, pour le cas où tu laisserais ta machine allumée plusieurs jours consécutifs,
une tâche cron du compte root qui après 08:00, lance ce script

Dernière modification par MicP (Le 16/11/2017, à 12:09)

Hors ligne

#11 Le 16/11/2017, à 18:16

Skyroots

Re : rtcwake : automatiser le réveil du lundi au vendredi

Bonjour bonjour,
Merci MicP pour ces conseils,

Voici la commande que je viens d’essayer :

23 16 * * * /usr/sbin/rtcwake --auto --mode no --time $(/bin/date +\%s -d "11/16/2017 25:16") >/home/utilisateur1/cron_log 2>&1

Comme vous voyez j’ai rajouté le chemin de la date ET la redirection d’erreur. J’ai fait le test mais ça n’a toujours pas allumé le pc. En vérifiant le message d’erreur il y a écrit « rtcwake : l’option ‘--time’ requiert un argument. Ce que je ne comprends pas c’est que l’heure est correctement écrite et cette même commande fonctionne lorsque qu’elle est lancée directement dans la console sans sudo crontab.
Mais vais-je un jour réussir à faire marcher cette commande dans sudo crontab ??? hmm

En ce qui concerne l’écriture du script, je ne suis pas capable de le faire car je débute tout juste linux en suivant les cours d'openclassroom, mais j'espère que dans quelques jours je pourrai l'écrire.

En ce qui concerne le script, je pense qu'on s'approche de la solution  mais pas tout à fait encore, car dans ce que tu proposes, si l'ordi ne s'allume ni samedi ni dimanche, pas de réveil le lundi. Et dans le script proposé il s'allumera le samedi matin à priori. Peut être que quelque chose comme ça serait mieux ? :

Automatiser le script pour qu'il se lance à chaque démarrage ou arrêt (ou veille prolongée plutôt...) de la machine (je sais pas comment faire):

Tester jour de semaine actuel.
SI le jour de semaine actuel est samedi ou dimanche
     ALORS programmer avec rtcwake un redémarrage pour le lundi suivant à 08:00
SINON

    SI le jour de la semaine est vendredi
         Tester l'heure actuelle.
             ET SI l'heure actuelle est avant 08:00
                  ALORS Programmer avec rtcwake un redémarrage pour le jour même à 08:00
                  SINON (c-à-d si l'heure actuelle est après 08:00) : programmer avec rtcwake un                 redémarrage pour le lundi suivant à 08:00

    SINON (c-à-d si le jour est lundi, mardi, mercredi ou jeudi)
          Tester l’heure,
        ET SI l'heure actuelle est avant 08:00
        ALORS Programmer avec rtcwake un redémarrage pour le jour même à 08:00
        SINON (c-à-d si l'heure actuelle est après 08:00) programme un redémarrage pour le lendemain.

Mais en fait ce script non plus ne va pas car il faut qu’il y ait une chaine ininterrompue d’allumages. Si un mardi par exemple je débranche mon pc, le mercredi il ne s’allumera pas (normal c’est ce que je veux), puis je le rebranche le mercredi pour me réveiller le jeudi : pas de chance car il ne se sera pas reprogrammé !...

Dernière modification par Skyroots (Le 16/11/2017, à 18:17)

Hors ligne

#12 Le 16/11/2017, à 23:22

MicP

Re : rtcwake : automatiser le réveil du lundi au vendredi

Pour la formulation de la tâche crontab, le problème venait seulement du format de la date.

Ci dessous, la ligne de la tâche crontab qui a permis de programmer l'heure de réveil par l'horloge RTC
pour que la machine démarre à 08:00 (heure en France) le 18 novembre 2017

07 23 * * * /usr/sbin/rtcwake --auto --mode no --time $(date -d '2017-11-18 08:00' +\%s) > /var/log/chgtWakeUp.txt
root@debg53sw:~# cat /var/log/chgtWakeUp.txt
rtcwake : « wakeup » (réveil) avec /dev/rtc0 à Sat Nov 18 07:00:00 2017
root@debg53sw:~# 

(On constate que mon horloge RTC utilisant l'heure UTC, le décalage horaire a été automatiquement appliqué)

Dernière modification par MicP (Le 16/11/2017, à 23:33)

Hors ligne

#13 Le 17/11/2017, à 00:20

Skyroots

Re : rtcwake : automatiser le réveil du lundi au vendredi

Eurêka !!

ça marche ! merci MicP !!

Par contre c'est incompréhensible le fait qu'avec la console mes commandes précédentes fonctionnaient alors qu'elles ne fonctionnaient pas avec sudo crontab... il faut donc un format spécial pour l'heure-date dans sudo crontab pour rtcwake alors qu'un autre peut être supporté dans la console, mais seulement la console... hum hum ok.

en tout cas ça marche, cool !

Pour ce qui est du script, je verrai un peu plus tard dans les jours qui viennent comment je m'en sors... ;-)

Hors ligne

#14 Le 17/11/2017, à 06:14

MicP

Re : rtcwake : automatiser le réveil du lundi au vendredi

Il aurait été possible d'utiliser le format de date que tu avais choisis,
mais il fallait alors spécifier la valeur de la variable Time Zone correspondant à ce format.

23 16 * * * /usr/sbin/rtcwake --auto --mode no --time $(date +\%s -d 'TZ="Europe/Paris" 11/18/2017 01:02') >/home/utilisateur1/cron_log 2>&1

voir aussi :

man timezone
man locale

Dernière modification par MicP (Le 17/11/2017, à 06:15)

Hors ligne