Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/08/2007, 12h34   #1
En attente de confirmation mail
 
Inscription : janvier 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 98
Points : 18
Points : 18
Par défaut definition d'une tache qui s'execute toutes les secondes

Bonjour

Est-il possible de definir une tache qui s'execute toutes les secondes

j'ai essayé d'utiliser crontab mais sa resolution est de 1 minute


j'au besoin de de faire un sync toutes les secondes pour eviter de perdre des donnes si un utilisateur debranche sa cle USB sans la demonter
Mokhtar BEN MESSAOUD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 13h52   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 497
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 497
Points : 9 677
Points : 9 677
Bonjour,

Si tu fais une synchronisation toutes les secondes, tu risques plusieurs choses :
  1. Tuer la clef USB : ce type de mémoire n'est pas fait pour être accédé de manière continue, sous risque d'endommagement
  2. Prendre 100% des ressources : faire une synchronisation n'est pas anodin, et demande des ressources au système.
  3. Diverger : que se passe-t-il si chaque sauvegarde prends 2 secondes, alors que tu en fais une toute les seconde ? Tu vas temporiser chaque sauvegarde que tu n'as pas pu faire pour les faire plus tard. Résultat au bout de 30 secondes : il faut attendre 1 minute que les synchronisations soient faites, là où, sans système de sauvegarde automatique, il n'aurait fallu attendre que 2 secondes.

Solutions :
  • Ne pas travailler sur une clef USB
  • S'il s'avère que tu n'as vraiment pas le choix (pas de mémoire disponible, ni de mémoire morte comme un disque dur), alors faire des sauvegardes sur des buffer locaux. Ensuite, il suffit de catcher le signal de démontage de la clef pour demander à l'utilisateur si les données sauvegardées de manière temporaire doivent être écrites ou non.

Enfin, saches que si l'utilisateur enlève sa clef USB sans démonter le volume, il y a de grandes chances pour qu'il flingue sa clef rapidement (surtout s'il l'enlève pendant une écriture).
Donc dans un tel cas, tant pis pour lui : il a perdu ses données, c'est bien fait.

Sinon, pour répondre à ta question, il n'est pas possible d'exécuter une tache toutes les secondes via la crontab. En revanche, c'est possible via un script ou via un programme (c'est même assez simple à faire), mais encore une fois, c'est plus que fortement déconseillé.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 00h32   #3
Membre habitué
 
Avatar de baroudi
 
Inscription : avril 2006
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2006
Messages : 117
Points : 129
Points : 129
Envoyer un message via MSN à baroudi
Dans les normes , si mes souvenirs sont bons, tu dois attendre 5 secondes avant de retirer ta clé usb. Ceci pour eviter de perdre er ta clé et tes données
Comme dit plus haut , une sauvegarde locale et des plus conseillée
__________________
___________________________________________
Ils ne savaient pas que c'était impossible, alors ils l'ont fait
baroudi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 07h19   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 776
Points : 7 776
le temps le plus court possible entre deux exécutions du même traitement est sa propre durée.....bref le lancer toutes les secondes est débile si il est amené à durée parfois 8-10secondes...même si tu estime sa moyenne à moins de 1seconde !!!

admettons que ton traitement dure 1seconde pile en moyenne ça veut dire qu'il dure au moins 8 seconde 3à4 fois dans une semaine (604800 secondes ne définit donc pas 604800 exécutions mais peut être que 604000....)

la seule solution consiste donc à relancer en permanence la tache dès que celle ci est terminée. car c'est le temps le plus court possible entre deux exécutions, il n'est pas mathématiquement possible de faire plus court.

cela se fait dans l'inittab (/etc/inittab)

exemple
Code :
1
2
 
gest_comm:34:respawn:upr/gest_comm.sh > /tmp/gest_comm_log
l'initialisation de l'inittab se fait par init -q ou initq selon les systèmes

là seulement est la solution, en particulier pour des copies de sauvegardes ou des manipulations de fichiers, qui par définition durent des temps extrêmement variables, (du simple au double), puisque dépendant de la disponibilité du bus matériel !

De plus ton idée de lancer toutes les secondes est aberrante en terme de méthode, ça pourrait entrainer des gros problème de disponibilité de bus matériel et donc provoquer des time-outs d'I/O sur des médias et planter des softs sans avoir pu enregistrer les données ni refermer les fichiers ouverts.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h33.


 
 
 
 
Partenaires

Hébergement Web