Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 19-11-2012 22:55:04

bendia
Admin stagiaire
Distrib. : Jessie
Noyau : 3.16.0-4-amd64
(G)UI : Gnome + XFCE + Console
Inscription : 20-03-2012
Site Web

[Resolu]Lancer un script bash à interval régulier

Bonsoir

Je viens de réaliser un script scrute le serveur  git-df pour vérifier si de nouveaux commit sont poussés.
J'ai deux solutions pour faire tourner le script "en boucle" et j'aimerais que vous me donniez votre avis sur la meilleurs des deux tongue :

1. Le premier truc qui me vient à l'esprit : une tâche cron.

2. Le deuxième, piqué sur un autre script du même genre (git-dude) :  une boucle while infinie avec un sleep temps_de-scutation à la fin.

Qu'en pensez vous ? smile

Dernière modification par bendia (22-11-2012 16:10:01)


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

En ligne

#2 20-11-2012 09:05:24

Thuban
Modérateur
Distrib. : OpenBSD
Noyau : current
(G)UI : xfce ou dwm
Inscription : 09-01-2009
Site Web

Re : [Resolu]Lancer un script bash à interval régulier

Bien que la boucle while fonctionne en général très bien, j'ai plutôt tendance pour ce genre de cas à faire confiance à cron§. Il a été concu pour ce genre de choses. De plus, si le script, pour une raison quelconque, s'arrête, tu ne t'en rendras pas forcément compte, alors que cron lui le lancera forcément à intervalles régulières.

YA3HGA-H

Hors ligne

#3 20-11-2012 14:47:11

bendia
Admin stagiaire
Distrib. : Jessie
Noyau : 3.16.0-4-amd64
(G)UI : Gnome + XFCE + Console
Inscription : 20-03-2012
Site Web

Re : [Resolu]Lancer un script bash à interval régulier

Merci

J'ai cependant un souci avec crontab.

Je fais

crontab -e



Puis le met la ligne suivante pour que mon script s'execute toutes les 10 minutes par exemple

# m h  dom mon dow   command
*/10 *  * * *   chemin/du/script parametre1 parametre2



et ça ne fonctionne pas.

Qu'est ce que je rate ?


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

En ligne

#4 20-11-2012 15:19:39

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : [Resolu]Lancer un script bash à interval régulier

Perso, je pars de la racine pour indiquer mon script sous root ainsi :

*/10 * * * * /root/scripts... parametre1 'le parametre 2' parametre_suivant


Des fois que ? roll

Dernière modification par smolski (20-11-2012 23:06:36)


"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#5 20-11-2012 22:58:26

bendia
Admin stagiaire
Distrib. : Jessie
Noyau : 3.16.0-4-amd64
(G)UI : Gnome + XFCE + Console
Inscription : 20-03-2012
Site Web

Re : [Resolu]Lancer un script bash à interval régulier

Merci mais ça marchez pas sad

C'est un script situé dans ~/.local/bin que j'essaye de lancer en tant qu'utilisateur.

Mon user appartient au groupe crontab et j'ai un fichier /etc/cron.allow.

Lorsque je copie la commande du crontab vers un terminal, elle fonctionne, mais rien à faire avec cron

Comprend pas

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

En ligne

#6 21-11-2012 08:42:07

bendia
Admin stagiaire
Distrib. : Jessie
Noyau : 3.16.0-4-amd64
(G)UI : Gnome + XFCE + Console
Inscription : 20-03-2012
Site Web

Re : [Resolu]Lancer un script bash à interval régulier

En fait, crontab fonctionne bien smile

Comme mon script lance une application X, il faut exporter le numéro de l'écran comme cela

*/10 * * * * export DISPLAY=:0 /root/scripts... parametre1 'le parametre 2' parametre_suivant


Resta à savoir comment récupérer le numéro d'écran qui change en fonction de l'ordre de conexion des différents utilisateurs ... hmm

Dernière modification par bendia (21-11-2012 08:42:41)


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

En ligne

#7 21-11-2012 08:51:58

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [Resolu]Lancer un script bash à interval régulier

Avec la commande env, tu extrais une des variables d'environnement, pour moi :

DISPLAY=:0.0

Dernière modification par paskal (21-11-2012 08:52:59)


I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#8 21-11-2012 13:43:13

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [Resolu]Lancer un script bash à interval régulier

Pour les autres connexions, j'ai juste un seul nombre qui s'incrémente derrière les deux points :

$ env | grep DISPLAY
DISPLAY=:1

par exemple.


I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#9 22-11-2012 16:09:18

bendia
Admin stagiaire
Distrib. : Jessie
Noyau : 3.16.0-4-amd64
(G)UI : Gnome + XFCE + Console
Inscription : 20-03-2012
Site Web

Re : [Resolu]Lancer un script bash à interval régulier

Merci paskal

J'avais déjà essayé cette solution mais elle ne fonctionne pas. Probablement que les variables d'environnement de cron sont différentes de celle de l'utilisateur.
J'ai donc fait ça pour récupérer le display et ça marche smile

who | grep user | head -n1 | cut -d"(" -f 2 | cut -d")" -f 1
:0


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

En ligne

Pied de page des forums