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 28/06/2016, à 19:04

LeRenard

Programmer une heure pour l'allumage de son pc [RESOLU]

Bonjour,

Je veux que mon ordi puisse se "lever" tout seul.

J'ai chercher un peu partout j'ai trouver ce post qui commence à dater..! https://forum.ubuntu-fr.org/viewtopic.php?id=78794&p=2 et ce billet https://www.linux.com/learn/wake-linux-rtc-alarm-clock
Je cherche à suivre la procédure décrite au post #28, à savoir utiliser l'alarme rtc , et j'en suis arrivé à cette commande de test ; qui semble marcher puisque je n'ai aucun message d'erreur :
sudo bash -c "echo `date '+%s' -d '+ 3 minutes'` > /sys/class/rtc/rtc0/wakealarm"

Mais ensuite quand je fais un cat /sys/class/rtc/rtc0/wakealarm, le fichier est vide.

J'ai l'intuition qu'un processus réécrit chaque fois les paramètres par defaut à chaque modification des fichier contenu dans /sys, mais je ne trouve rien à ce sujet...
En effet, quand j'ouvre wakealarm avec nautilus (ouvert en sudo) et que je lance la commande, nautilus me met un message : Le fichier « /sys/class/rtc/rtc0/wakealarm » a été modifié sur le disque. Recharger/Annulé. et quand je clique sur recharger toujours rien.

Quelqu'un aurait-t-il des pistes la-dessus? Et si il existe d'autres méthodes je suis preneur aussi tongue Merci d'avance!

*à noter, la même commande : sudo bash -c "echo `date '+%s' -d '+ 3 minutes'` > /sys/class/rtc/rtc0/wakealarm2" me renvois permission denied alors que je suis bien en sudo, est-ce normal? le fichier wakealarm2 n'existant pas à la base.

Ma conf:
Ubuntu 14.04
Processeur: Intel® Core™ i7-4700MQ CPU @ 2.40GHz × 8
carte graphique : Intel® Haswell Mobile

Quelques info sur mon bios au cas ou:
Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
    Manufacturer: TOSHIBA
    Type: Notebook
    Lock: Not Present
    Version: To Be Filled By O.E.M.
    Serial Number: CSN12345678901234567
    Asset Tag: No Asset Tag
    Boot-up State: Safe
    Power Supply State: Safe
    Thermal State: Safe
    Security Status: None
    OEM Information: 0x00000000
    Height: Unspecified
    Number Of Power Cords: 1
    Contained Elements: 0
    SKU Number: To be filled by O.E.M.

Dernière modification par LeRenard (Le 02/07/2016, à 13:39)

Hors ligne

#2 Le 28/06/2016, à 20:46

MicP

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

Essaye avec ça :

sudo bash -c "wkal='/sys/class/rtc/rtc0/wakealarm';echo 0 > $wkal && date '+%s' -d '+ 121 minutes' > $wkal && grep 'al\|time' < /proc/driver/rtc"

Voilà ce que ça donne chez moi (je n'utilise pas sudo, mais c'est la même commande qui sera exécutée sous le compte root) :

michel@debg53sw:~$ su -c "wkal='/sys/class/rtc/rtc0/wakealarm';echo 0 > $wkal && date '+%s' -d '+ 121 minutes' > $wkal && grep 'al\|time' < /proc/driver/rtc"
Mot de passe : 
rtc_time	: 19:41:06
alrm_time	: 21:42:06
alrm_date	: 2016-06-28
alarm_IRQ	: yes
alrm_pending	: no
michel@debg53sw:~$ 

alarm_IRQ est passé à yes et ma machine redémarrera à 21:42:06 UTC ce qui corresponds à 01:42:06 pour l'heure de Paris

Mes autres machines peuvent être programmées pour redémarrer dans les 5 minutes, mais pour mon G53SW, c'est 121 minutes minimum.

Pour ta machine, tu avais demandé un redémarrage dans les 3 minutes, mais c'est peut-être un peu trop court.

Dernière modification par MicP (Le 28/06/2016, à 23:12)

Hors ligne

#3 Le 29/06/2016, à 00:21

LeRenard

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

Merci pour ta réponse!

La commande me renvois une erreur:

frscb@frscb:~$ sudo bash -c "wkal='/sys/class/rtc/rtc0/wakealarm';echo 0 > $wkal && date '+%s' -d '+ 121 minutes' > $wkal && grep 'al\|time' < /proc/driver/rtc"
bash: -c: ligne 0: Erreur de syntaxe près du symbole inattendu « && »
bash: -c: ligne 0: `wkal='/sys/class/rtc/rtc0/wakealarm';echo 0 >  && date '+%s' -d '+ 121 minutes' >  && grep 'al\|time' < /proc/driver/rtc'

J'ai essayé avec sh même erreur:

frscb@frscb:~$ sudo sh -c "wkal='/sys/class/rtc/rtc0/wakealarm';echo 0 > $wkal && date '+%s' -d '+ 121 minutes' > $wkal && grep 'al\|time' < /proc/driver/rtc"
sh: 1: Syntax error: "&&" unexpected

Et oui les 3minutes c'était juste pour le test.

Dernière modification par LeRenard (Le 29/06/2016, à 00:34)

Hors ligne

#4 Le 29/06/2016, à 12:27

serged

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

Ça se règle en général dans le BIOS. Dépend des possibilités du BIOS, justement...


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#5 Le 29/06/2016, à 12:41

MicP

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

@serged

Dépend des possibilités du BIOS, justement...

Pas tout-à fait, car le BIOS dans cette histoire ne sert que d'interface.

En fait, tout dépends de la RTC et de l'ACPI.

Mes machines (ASUS EeePC 900, 1005PE, 1001PX, G53SW) n'ont pas de possibilité de réglage d'heure de réveil par l'interface du BIOS, ce qui ne m'empêche pas d'accéder aux registres de la RTC pour programmer une heure de réveil et constater que ça fonctionne correctement malgré l'incohérence des messages affichés ensuite par l'interface du BIOS.

Dernière modification par MicP (Le 29/06/2016, à 12:56)

Hors ligne

#6 Le 29/06/2016, à 12:54

MicP

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

@LeRenard
Je n'utilise pas sudo, du coup, la ligne de commandes utilisant sudo était peut-être mal formulée.
Tu peux essayer avec cette ligne de commandes :

sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && date '+%s' -d '+ 10 minutes' > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"

Ou alors, tu passe directement sous le compte root pour l'exécuter :

sudo -i
echo 0 > /sys/class/rtc/rtc0/wakealarm && date '+%s' -d '+ 10 minutes' > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc
exit

Après avoir entré la commande sudo -i il te faudra entrer le mot de passe du compte root

Essaye avec 10 minutes : Il est possible que 3 minutes fassent trop peu d'écart pour que l'alarme puisse être prise en compte.

Dernière modification par MicP (Le 29/06/2016, à 13:00)

Hors ligne

#7 Le 29/06/2016, à 17:54

LeRenard

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

@MicP
Merci! Mais ca ne marche toujours pas pour moi tongue Voici le résultat de cette nouvelle commande

frscb@frscb:~$ sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && date '+%s' -d '+ 10 minutes' > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"
rtc_time	: 18:51:05
alrm_time	: 18:56:05
alrm_date	: 2016-06-29
alarm_IRQ	: no
alrm_pending	: no

Quelque soit le nombre de minutes que j'indique le résultat est le même, il me mette +5min à l'alarme time.
Aussi alarm irq reste à "no"

Même résultat quand je passe la commande en root, avec quelques couleur bizarement répartis en plus; chaque "time" et chaque "al" apparaissent en rouge.

@serged
J'ai déjà été voir dans mon bios et l'option n'est pas disponible, d'ou mon post.

EDIT :
Je n'avais juste pas tester une valeur assez grande, en faite comme pour toi apparament il me faut 121min au minimum.

frscb@frscb:~$ sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && date '+%s' -d '+ 121 minutes' > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"
rtc_time	: 19:07:22
alrm_time	: 19:08:22
alrm_date	: 2016-06-29
alarm_IRQ	: yes
alrm_pending	: no
frscb@frscb:~$ 

Reste que 19h07 plus 121minutes ne devrait pas donner 19h08, ou sont passés ces deux heures?
Est ce que l'une est en format GMT l'autre en UTC?

Dernière modification par LeRenard (Le 29/06/2016, à 18:11)

Hors ligne

#8 Le 29/06/2016, à 19:40

MicP

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

J'ai l'impression que l'heure RTC de ta machine est à l'heure de Paris (Perso, je la mets toujours à l'heure UTC).
Donc tu as juste rajouté 121 minutes à la date/heure UTC pour déterminer l'heure d'alarme, ce qui fait, une minute de plus en heure de Paris.
Et vu que :

alarm_IRQ    : yes

Je pense que l'alarme avait bien été programmée.

Alors, si tu fais :

sudo bash -c "echo 0 > /sys/class/rtc/rtc0/wakealarm && date '+%s' -d '+ 125 minutes' > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"

et que tu arrête ta machine, elle devrait redémarrer dans les 5 minutes

Dernière modification par MicP (Le 29/06/2016, à 19:43)

Hors ligne

#9 Le 29/06/2016, à 20:05

LeRenard

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

Ca fonctionne en effet! Un grand merci à toi!

Je vais pouvoir commencer à écrire un petit programme pour créer des réveils en musique, je posterais quand j'aurais avancé si jamais ca peut interesser quelqu'un. Pour l'instant j'ai rhythmbox qui se lance à l'allumage, c'est déjà bien je vais pouvoir tester ca demain matin tongue

Et c'était mon tout premier post, je sais pas du coup comment passer le sujet en résolu?

Hors ligne

#10 Le 30/06/2016, à 02:04

MicP

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

En utilisant le bouton Modifier situé en bas à droite du premier message de ce fil de discussion,
tu aura alors aussi la possibilité de modifier le titre de ce fil de discussion,
et tu pourra y ajouter [RESOLU]

Hors ligne

#11 Le 30/06/2016, à 02:12

MicP

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

Windows a la fâcheuse manie de remettre la RTC à l'heure qui lui va bien, ce qui cause des soucis avec les autres systèmes.

Si tu veux ne plus être embêté avec ça, c'est facile :

il suffit de créer une clef nommée RealTimeIsUniversal de type dword dans la base de registre à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
et mettre cette clef dword à 1

Hors ligne

#12 Le 02/07/2016, à 13:38

LeRenard

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

J'avais pas du tout imaginé que window pouvait interférer, très fort de ta part d'y avoir penser à ma place alors que j'avais même pas précisé que j'était en dual boot!
Du coup j'avais dis que je mettrais le résultat de mon script :
Sans argument il lance un petit promt des options possibles, avec on peut passer directement une date en argument.
Et j'ai mis deux option, -v ou -view qui affiche l'heure programmé actuellement, et -a ou -auto qui met automatiquement à jour le réveil selon le jour de la semaine.

#!/bin/bash

if [ "$1" ] && [ "$1" != "-view" ] && [ "$1" != "-v" ] && [ "$1" != "-auto" ] && [ "$1" != "-a" ];then # <
	DATE_STRING="$1 $2 $3 $4 $5 $6 $7 $8 $9"
	DATE=`date --date="$DATE_STRING" +%s`
	let "DATE_AJUST=$DATE+7200"
	sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && echo "$DATE_AJUST" > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"
elif [ "$1" = "-view" ] || [ "$1" = "-v" ];then
	sudo bash -c  "grep 'al\|time' < /proc/driver/rtc"

elif [ "$1" = "-auto" ] || [ "$1" = "-a" ] ;then
	DATE_ACTUEL=`date +%s`
	TODAY_STRING=`date +%A`
	##############################################  HEURE DE L'ALARME AUTO : 08h48:30   ##########
	TODAY_ALARM=`date --date='08:48:30 today' +%s`
	TOMORROW_ALARM=`date --date='08:48:30 tomorrow' +%s` #next day marche aussi
	let "TODAY_AJUST=$TODAY_ALARM+7200" # on ajuste sur les 2h de décalage de l'horloge 
	let "TOMORROW_AJUST=$TOMORROW_ALARM+7200"
	case "$TODAY_STRING" in
		dimanche ) ###############################   DIMANCHE   ##############################
	if [ "$DATE_ACTUEL" -gt "$TODAY_ALARM" ];then # >
	  sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && echo "$TODAY_AJUST" > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"
	fi;;
	
		lundi | mardi | mercredi | jeudi ) #######   LUN,MAR,MER,JEU   #######################
	if [ "$DATE_ACTUEL" -lt  "$TODAY_ALARM" ];then # <
	  sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && echo "$TODAY_AJUST" > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"
	else
	  sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && echo "$TOMORROW_AJUST" > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"
	fi;;
		vendredi ) ###############################   VENDREDI   ##############################
	if [ "$DATE_ACTUEL" -lt "$TODAY_ALARM" ];then # <
	  sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && echo "$TODAY_AJUST" > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"
	else echo "Pas de réveil demain matin!"
	fi;;
		samedi ) #################################   SAMEDI   ##############################
	echo 'Pas de réveil aujourdhui!'	
	esac
else
	echo '##############################################################################'
	echo '##############################################################################'
	echo '####                                                                      ####'
	echo "####      A quelle heure programmer le réveil de l'ordinateur ?           ####"
	echo '####                                                                      ####'
	echo '##############################################################################'
	echo '####          Formats possibles :                                         ####'
	echo '##############################################################################'
	echo '####                                                                      ####'
	echo '####  - 8, 08:45, 08:45:30     --> aujourdhui 8h, 8h45, 8h45 et 30sec     ####'
	echo '####  - 12/31/99               --> vendredi 31 décembre 1999              ####'
	echo '####  - 2 hour, 2 day          --> dans 2 heures, 2 jours                 ####'
	echo '####                                                                      ####'
	echo '####  - next, last, today, tomorrow, yesterday (inutile ici..!)           ####'
	echo '####  - first, second, third, fourth, fifth...                            ####'
	echo '####  - sec, hour, min, week, day, year                                   ####'
	echo '####                                                                      ####'
	echo '####  - Vous pouvez combinez!    08:45:00 second last week next month     ####'
	echo '####                                                                      ####'
	echo '##############################################################################'
	echo '##############################################################################'
	echo '   -> Entrer une date : '


	read DATE_STRING
	DATE=`date --date="$DATE_STRING" +%s`
	let "DATE_AJUST=$DATE+7200" # +2h pour le decalage de l'horloge

	# redémarre à la date récupéré
	sudo bash -c  "echo 0 > /sys/class/rtc/rtc0/wakealarm && echo "$DATE_AJUST" > /sys/class/rtc/rtc0/wakealarm && grep 'al\|time' < /proc/driver/rtc"
fi
exit 0

Simple mais efficace. la fonction date gère à peu près n'importe quel format!
Réveil dans 2h30 : 2 hour 30 sec, 2hours 30seconds, 2hour30sec...
lundi prochain à 15h : next mon 15pm, next monday 15:00, mon next week 15hour...

@MicP Encore un grand merci a toi pour ton aide!

Dernière modification par LeRenard (Le 02/07/2016, à 13:47)

Hors ligne

#13 Le 02/07/2016, à 15:34

MicP

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

J'avais pensé à un truc qui calculerait le décalage horaire en fonction de celui de l'environnement du système.
il s'agit de la variable timezone.

On peut donc le calculer plutôt que de l'indiquer directement (au cas où il changerait…en hiver)

Dans ton script on pourrait l'insérer en remplaçant :

…
	let "DATE_AJUST=$DATE+7200" # +2h pour le decalage de l'horloge
…

par:

…
        decalH=$(date --date="$DATE_STRING" +%:z | awk '{op=substr($1,1,1);h=substr($1,2,2);m=substr($1,5,2);print op (h*3600)+(m*60)}')
        DATE_AJUST=$(( $DATE + $decalH ))  # + Le décalage horaire (en plus ou en moins)
…

Dernière modification par MicP (Le 12/09/2021, à 17:37)

Hors ligne

#14 Le 02/07/2016, à 16:57

LeRenard

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

Bien vu! en effet le seul petit soucie qu'il restais c'était qu'en mettant une date dans plusieurs mois ou années j'avais parfois ce décalage d'une heure. c'est plus le cas

Hors ligne

#15 Le 02/07/2016, à 19:11

MicP

Re : Programmer une heure pour l'allumage de son pc [RESOLU]

dans decalH j'ai rajouté

 --date="$DATE_STRING"

sinon le décalage était calculé en fonction de l'heure à laquelle on programmait la RTC mais pas en fonction de l'heure de réveil demandée.

Dernière modification par MicP (Le 02/07/2016, à 20:49)

Hors ligne