Debian-facile

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

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

#1 18-02-2016 13:25:29

laguespa
Membre
Distrib. : Jessie
Noyau : 4.2.0-0.bpo.1-amd64
(G)UI : Mate
Inscription : 25-09-2009

Exécution périodique d'un script en tâche de fond.

Bonjour.

Si je veux qu'un script que j'ai créé qui est pris en compte par update-rc.d s'exécute avec une périodicité régulière, disons toutes les 10 secondes, qu'est-ce qu'il faut que je renseigne dans le script ? Je crois que ça s'appelle un daemon non ?

A+

"Ce serait peut-être l’une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d’autre que du code."

Hors ligne

#2 18-02-2016 13:55:35

wlourf
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : awesome
Inscription : 19-07-2010

Re : Exécution périodique d'un script en tâche de fond.

Bonjour,

Tu peux mettre une boucle avec un sleep 10s ?

Hors ligne

#3 18-02-2016 13:58:13

Firy
Membre
Distrib. : Debian Jessie 8.3
Noyau : 3.16.0
(G)UI : Openbox
Inscription : 22-01-2016

Re : Exécution périodique d'un script en tâche de fond.

Ou une crontab.

Cependant il faut que tu rajoutes un petit script parce que l'exécution minimum par défaut est d'une minute.

Hors ligne

#4 18-02-2016 14:03:18

laguespa
Membre
Distrib. : Jessie
Noyau : 4.2.0-0.bpo.1-amd64
(G)UI : Mate
Inscription : 25-09-2009

Re : Exécution périodique d'un script en tâche de fond.

Ok, crontab j'y avais pas pensé.
Une boucle avec un sleep 10 ça se fait comment ?

A+

"Ce serait peut-être l’une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d’autre que du code."

Hors ligne

#5 18-02-2016 14:07:59

robert2a
Membre
Lieu : France
Distrib. : Stretch
Noyau : Linux 4.8.0-1-amd64
(G)UI : Mate 1.16.1
Inscription : 15-11-2014

Re : Exécution périodique d'un script en tâche de fond.

Hors ligne

#6 18-02-2016 14:09:13

wlourf
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : awesome
Inscription : 19-07-2010

Re : Exécution périodique d'un script en tâche de fond.

Avec cron, tu ne peux pas descendre sous la minute ... (Edit : Firy l'a déjà dit smile )


while true;
do
 # ton code
sleep 10s
done
 

Dernière modification par wlourf (18-02-2016 14:11:46)

Hors ligne

#7 18-02-2016 14:15:19

laguespa
Membre
Distrib. : Jessie
Noyau : 4.2.0-0.bpo.1-amd64
(G)UI : Mate
Inscription : 25-09-2009

Re : Exécution périodique d'un script en tâche de fond.

wlourf a écrit :

Avec cron, tu ne peux pas descendre sous la minute ... (Edit : Firy l'a déjà dit smile )


while true;
do
 # ton code
sleep 10s
done
 



A placer dans mon script ?


"Ce serait peut-être l’une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d’autre que du code."

Hors ligne

#8 18-02-2016 14:22:32

wlourf
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : awesome
Inscription : 19-07-2010

Re : Exécution périodique d'un script en tâche de fond.

bah comment dire, soit tu créés un autre script qui appelle ton script (c'est bien du bash ton script ?) comme ça :

#!/bin/bash

while true;
do
 /chemin/vers/ton/script.sh
sleep 10s
done

 



soit tu modifies ton script en ajoutant au début :


while true;
do
 


et à la fin :


sleep 10s
done

 



exemple qui fonctionne :


#!/bin/bash
while true;
do
date +%T
 sleep 10s
 done

 

Hors ligne

#9 18-02-2016 14:29:26

laguespa
Membre
Distrib. : Jessie
Noyau : 4.2.0-0.bpo.1-amd64
(G)UI : Mate
Inscription : 25-09-2009

Re : Exécution périodique d'un script en tâche de fond.

Oui, mon script c'est du bash.
Je vais essayer en intégrant les instructions dans mon scipt plutôt que d'en faire un nouveau qui l'appelle.
Je teste et je vous dis.

A+

"Ce serait peut-être l’une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d’autre que du code."

Hors ligne

#10 18-02-2016 14:56:22

laguespa
Membre
Distrib. : Jessie
Noyau : 4.2.0-0.bpo.1-amd64
(G)UI : Mate
Inscription : 25-09-2009

Re : Exécution périodique d'un script en tâche de fond.

Bon, j'ai pas l'impression qu'il s'exécute toutes les 10 secondes.

Au fait, je viens de m'apercevoir que c'était pas du bash le script parce que c'est écrit #!/bin/sh au début. Je dis pas de conneries hein ?

Peut-être que c'est mon script qui est mal écrit. Je vous laisse juge :


#!/bin/sh
### BEGIN INIT INFO
# Provides: Deplacer les documents multimedia
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Deplacer les fichier multimedia verses par les utilisateurs dans les repertoires Musique Video PDF et Images
# Description: This file should be used to construct scripts to be placed in /etc/init.d.
#
### END INIT INFO

while true;
do

## Pour mettre les images dans Images
find /opt/piratebox/share/Shared -type f -name "*.png" "*.jpg" "*.bmp" -exec sh -c '
mv $1 /opt/piratebox/share/Shared/Images/
' _ {} \;

## Pour mettre les fichiers audio dans Musique
find /opt/piratebox/share/Shared -type f -name "*.mp3" "*.flac" "*.wav" "*.alac" "*.aiff" "*.m4a" -exec sh -c '
mv $1 /opt/piratebox/share/Shared/Musique/
' _ {} \;


## Pour mettre les vidéo dans Video
find /opt/piratebox/share/Shared -type f -name "*.avi" "*.mp4" "*.mkv" -exec sh -c '
mv $1 /opt/piratebox/share/Shared/Video/
' _ {} \;


## Pour mettre les pdf dans PDF
find /opt/piratebox/share/Shared -type f -name "*.pdf" -exec sh -c '
mv $1 /opt/piratebox/share/Shared/PDF/
' _ {} \;

sleep 10s
done

 

Dernière modification par laguespa (18-02-2016 15:02:24)


"Ce serait peut-être l’une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d’autre que du code."

Hors ligne

#11 18-02-2016 15:27:46

wlourf
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : awesome
Inscription : 19-07-2010

Re : Exécution périodique d'un script en tâche de fond.

Pour le tester, tu peux ajouter date après while do; ça t'affichera la date à chaque boucle (si tu lances le script manuellement depuis un terminal).


Mais tu ne devrais pas placer ce script tel quel dans /etc/init.d . Regarde les autres scripts dans le répertoire, il y a quelques règles à respecter (regarde aussi le README dans ce répertoire)

Pour lancer ton script au démarrage, sans passer par init.d, tu peux ajouter une tache cron :


@reboot /chemin/tonscript
 



Sinon, pour ton script, au lieu d'utiliser find toutes les 10 secondes qui doit consommer pas mal de ressources de ton raspberry, tu peux aussi créer une règle : à chaque apparition d'un fichier de type donné dans tel ou tel répertoire, ce fichier pourra être déplacé. Je ne connais pas trop ça, attends d'autres avis de barbus smile

Hors ligne

#12 18-02-2016 15:31:29

laguespa
Membre
Distrib. : Jessie
Noyau : 4.2.0-0.bpo.1-amd64
(G)UI : Mate
Inscription : 25-09-2009

Re : Exécution périodique d'un script en tâche de fond.

Ouais, je vais éviter de consommer de la ressource et mettre une règle. En plus il faut que j'exclue des répertoires du script. Ça va prendre plus de temps que je pensais tout ça.

A+

"Ce serait peut-être l’une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d’autre que du code."

Hors ligne

#13 18-02-2016 21:50:29

leonlemouton
Adhérent(e)
Distrib. : Jessie
Noyau : Linux 3.16.0-4-686-pae
(G)UI : Mate 1.8.1
Inscription : 14-08-2012

Re : Exécution périodique d'un script en tâche de fond.

Peut-être un truc comme ça avec crontab :

https://forum.ovh.com/showthread.php/87 … 0-Secondes

Leonlemouton
°(")°

Hors ligne

#14 18-02-2016 22:04:56

laguespa
Membre
Distrib. : Jessie
Noyau : 4.2.0-0.bpo.1-amd64
(G)UI : Mate
Inscription : 25-09-2009

Re : Exécution périodique d'un script en tâche de fond.

Bon si ça s'éxécute toutes les minutes ça m'ira aussi. Je disais toutes les 10 secondes histoire de dire. Toutes les 60 voire toutes les 600 ça ira très bien. smile

"Ce serait peut-être l’une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d’autre que du code."

Hors ligne

Pied de page des forums