Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 20 utilisateurs en ligne, consultez le détail
Auteur Message
flash6b
#0 Message posté le : 18-11-2006 à 10:40:51


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 06-03-2006
Nombre de messages : 17
Bonjour,
j'aimerai savoir s'il est possible,dans un script bash,qu'une commande soit lancer à l'heure indiquée par l'utilisateur du script.
J'ai vaguement pensé à faire lire le résultat de la commande date +%M%H dans le script....
Les idées sont bienvenues.
Merci.
Flash6b
Moilebigboss
#1 Message posté le : 18-11-2006 à 10:49:43


Naboo


Forum : Inscrit
Association :
Arrivé(e) le : 24-02-2004
Nombre de messages : 2217
Bin c'est possible mais il faut que toàn script soit un "daemon", il faut qu'il tourne en attendant que l'heure soit bonne. Donc tu doit surement faire un while avec : ta condition d'heure et un temps d'attente pour ne pas que ton programme bouffe 100% du proc.

Sinon pourquoi tu n'utilise pas cron ?
Kangourou
#2 Message posté le : 18-11-2006 à 13:13:31


Hobbit


Forum : Inscrit
Association :
Arrivé(e) le : 08-06-2004
Nombre de messages : 1239
Oui utilise cron si tu veux que ta commande sois utilisé plusieurs fois (genre toute les heures). Si tu veux que ça sois une seule fois, utilise at :
sys-process/at
Available versions: 3.1.8-r11 ~3.1.8-r12
Homepage: ftp://jurix.jura.uni-sb.de/pub/jurix/source/chroot/appl/at/
Description: Queues jobs for later execution
flash6b
#3 Message posté le : 18-11-2006 à 13:58:07


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 06-03-2006
Nombre de messages : 17
J'avais bien pensé à at ou cron mais le commande à lancer concerne vlc qui se lance en mode graphique.
D'aprés ce que j'ai essayé,at ne fonctionne pas dans ce cas là.
Si at fonctionne avec un processus qui ouvre une fenètre ou si je peux lancer un enregistrement sans que vlc ne s'ouvre,le script lui-même devient facultatif.
Si je fais une boucle qui compare le résultat de la commande date avec l'heure
demandée par l'utilisateur entre des sleep il me faut une marge.Il ne pourra jamais tomber pile,ou il faut que j'augmente les comparaisons d'heures quand on se raproche de l'heure demandée.
Ca doit être faisable,je pense.
Ciao.
Moilebigboss
#4 Message posté le : 18-11-2006 à 14:20:09


Naboo


Forum : Inscrit
Association :
Arrivé(e) le : 24-02-2004
Nombre de messages : 2217
Si tu fais un sleep de 20/30 seconde, ça suffit pour décharger le processeur et si ton heure n'est précise qu'à la minute ta comparaison sera exacte.

Sinon j'ai rien compris avec ton VL machin graphique
flash6b
#5 Message posté le : 18-11-2006 à 20:23:16


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 06-03-2006
Nombre de messages : 17
Re,
merci pour les réponses.En fait,quand on lance la commande vlc -vvv 'le flux' --sout 'fichier_et_format',ça marche, mais ça lance l'interface graphique de vlc et "at" ne semble pas le permettre.
Je pensai faire un sleep qui dépend de la différence entre l'heure demandée et l'heure retourné par 'date'.Je vais voir cette idée.
Ciao.
Moilebigboss
#6 Message posté le : 19-11-2006 à 10:06:00


Naboo


Forum : Inscrit
Association :
Arrivé(e) le : 24-02-2004
Nombre de messages : 2217
Tu n'as pas une commande pour ne pas ouvrir le graphique ?
Il me semble qu'avec vlc on est pas obligé de'utilser le graphique. Quand j'avais essayé sur gentoo. Un truc genre vlc --nogui ?

Enfin regarde on sait jamais
Azollyx
#7 Message posté le : 19-11-2006 à 16:43:29


Naboo


Forum : Modérateur
Association : Président
Arrivé(e) le : 09-04-2006
Nombre de messages : 2085
sinon tu peux essayer de spéciafiez le display :
xhost +localhost
at ... = DISPLAY=:0 vlc...
tu peux même essayer de lancer un terminal qui lance VLC via un script.

-------------------------------------
toto
jblecanard
#8 Message posté le : 19-11-2006 à 17:52:37


Jedi


Forum : Modérateur
Association : Membre fondateur
Arrivé(e) le : 08-01-2005
Nombre de messages : 4030
Kangourou a écrit :


Oui utilise cron si tu veux que ta commande sois utilisé plusieurs fois (genre toute les heures). Si tu veux que ça sois une seule fois, utilise at :


Cron permet aussi de lancer une commande une seule fois à une date ou une heure donnée. Pourquoi utiliser at ?

Edit : parce qu'on peut se passer de modifier un fichier de config pour le faire. Ok j'ai compris.

Sinon je plussoie l'idée d'Azollyx.

--Message édité par jblecanard le 19-11-2006 à 19:27:41--


-------------------------------------
C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon -
flash6b
#9 Message posté le : 19-11-2006 à 18:36:10


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 06-03-2006
Nombre de messages : 17
Bonsoir,
en effet, la commande:

at 'heure'
export DISPLAY=:0.0 ; vlc
fonctionne nickel.Ca inclut la variable indispensable au graphique dans l'environnement constitué par at.
Merci beaucoup,c'est génial.Je n'ai pas trouvé trace d'un argument comme l'équivalent de -nogui pour mplayer.
C'est une solution simple et efficace,je peux quand même faire un script pour le fun en incluant 'at'.
Merci à tous .
Ciao.
lenounoursmignon
#10 Message posté le : 19-11-2006 à 21:18:51


Jedi


Forum : Inscrit
Association :
Arrivé(e) le : 03-08-2003
Nombre de messages : 4073
euh, "mplayer", ce serait pas déja une version console ? avec "gmplayer" comme GUI

-------------------------------------
Troisième loi de Greer :
Un programme informatique ne fait jamais ce que vous voudriez qu'il fasse, ... il fait seulement ce que vous lui dites de faire.
jblecanard
#11 Message posté le : 19-11-2006 à 22:55:40


Jedi


Forum : Modérateur
Association : Membre fondateur
Arrivé(e) le : 08-01-2005
Nombre de messages : 4030
oui, le nounoursmignon est dans le vrai. Cependant, il lui faut tout de même une session graphique pour afficher une video, ou un framebuffer...

--Message édité par jblecanard le 19-11-2006 à 22:56:15--


-------------------------------------
C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon -
flash6b
#12 Message posté le : 19-11-2006 à 22:59:05


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 06-03-2006
Nombre de messages : 17
Oui,désolé,c'était juste pour répondre à la suggestion de Moilebigboss pour lancer
vlc sans interface.
Par contre at -f 'nom_ du_fichier' 'heure'
avec export DISPLAY=:0.0 ; vlc étant le contenu du fichier(rendu exécutable)
ne marche pas.Je n'ai pas encore trouvé pourquoi.

Désolé,je me suis trompé dans la syntaxe.
J'ai mis :0:0 au lieu de :0.0
Plus nul!!!!

--Message édité par flash6b le 19-11-2006 à 23:56:22--
Kangourou
#13 Message posté le : 20-11-2006 à 09:59:22


Hobbit


Forum : Inscrit
Association :
Arrivé(e) le : 08-06-2004
Nombre de messages : 1239
jblecanard a écrit :


Cron permet aussi de lancer une commande une seule fois à une date ou une heure donnée. Pourquoi utiliser at ?

Edit : parce qu'on peut se passer de modifier un fichier de config pour le faire. Ok j'ai compris.


Ouais, je sais pas si tu peux lui dire de le faire une fois et une seule, et qu'il efface la ligne correspondante après l'avoir exécuté avec cron ?
Logan
#14 Message posté le : 20-11-2006 à 11:39:46


Scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 30-11-2004
Nombre de messages : 278
Je me suis fait un script pour faire de mon lecteur multumedia un radio-reveil:

#! /bin/sh



#Recuperation de l'heure et minutes a laquelle se reveiller

	echo "Reveil: heures"; read heure_reveil #Heure et minutes a laquelle se reveiller

	echo "Reveil: minutes"; read minute_reveil



#Recuperation de l'heure et minutes apres la fin de la lecture

	heure_act=$(date +%H)

	minute_act=$(date +%M)



#Calcul du temps de sommeil restant (en minutes)

	minute_rest=$(expr $minute_reveil - $minute_act)

	heure_rest=$(expr $heure_reveil - $heure_act)



	#Si on est encore au jour avant le reveil (script lancé avant minuit), on rajoute 24h au nombre d'heures de sommeil restantes

		if [ $heure_rest -lt 0 ]; then

			heure_rest=$(expr $heure_rest + 24)

		fi



	#tant que le nombre de minutes restantes est négative, on enleve une heure qu'on rajouter comme 60 minutes

		while [ $minute_rest -lt 0 ] ; do

			minute_rest=$(expr $minute_rest + 60)

			heure_rest=$(expr $heure_rest - 1)

		done 

	#On a calculer le nombre d'heures et de minutes restantes



	let temps_rest=" 60 * $heure_rest "

	temps_rest=$(expr $temps_rest + $minute_rest)

#Fin du calcul du temps restant, en minutes



 #On met le temps en secondes pour sleep

	let temps_rest=" 60 * $temps_rest"

	sleep $temps_rest



En gros, calcule le temps qu'il y a entre l'heure actuelle et l'heure à laquelle tu veut lancer at commande et fait un sleep de cette durée.

-------------------------------------
Open your mind, use Open Source.

Le kangourou repeint toujours son tournevis quand les kiwis jouent du piano (François Perusse)
flash6b
#15 Message posté le : 21-11-2006 à 23:41:45


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 06-03-2006
Nombre de messages : 17
Bonsoir,
merci pour ton script,logan,je n'ai plus besoin de gérer le temps mais j'ai quelque chose qui cloche:

case $choix in
=2)
$choix={chaines[2]}
........
esac
ce petit morceau de code ne donne rien.Je voudrai que si le contenu de la variable $choix est 2,la variable $choix prenne le contenu de la variable indexé 2 dans le tableau chaines.J'ai cherché et essayé mais je ne trouve pas la bonne syntaxe.
Est ce possible ou il faut s'y prendre autrement?
Merci.Ciao.