logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

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 21:55:04

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
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 15:10:01)


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

Hors ligne

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

Thuban
aka prx
Distrib. : OpenBSD
Noyau : current
(G)UI : cwm
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.

Hors ligne

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

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
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.

Hors ligne

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

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
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 22:06:36)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

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

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
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.

Hors ligne

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

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
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 07:42:41)


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

Hors ligne

#7 21-11-2012 07: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 07: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 12: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 15:09:18

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
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.

Hors ligne

Pied de page des forums