IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[bash] faire un système de "spool" ?


Sujet :

Linux

  1. #1
    Membre régulier Avatar de Merfolk
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 170
    Points : 113
    Points
    113
    Par défaut [bash] faire un système de "spool" ?
    Bonjour,

    je chercherais à faire une sorte de système de "spool"
    - plusieurs traitements en parallèle, avec nombre max, et attente.

    exemple un script lancé toutes les minutes

    1) cherche un slot libre .. si (aucun) sleep ou exit
    2) lock slot
    3) traitement
    4) unlock slot


    je suis parti sur des fichiers locks, mais je me rends compte que ce que j'ai écris ça ne marchera pas (et me rappelle brutalement de la notion de mutex / semaphores)

    je n'ai pas envie d'écrire un mécanisme très complexe, ne veux pas utiliser des notions système avancée (genre placer des mutex)

    Est-ce qu'il existe une "lib" reconnue qui fasse quelque chose de similaire ?
    Ou une simple commande shell que je ne connaitrais pas ?

    algorithmiquement je souhaite faire quelque chose du genre :

    while (true)
    if quelque chose à faire
    attendre un emplacement libre
    go (quand commence / finit - utilise et libère l'emplacement)



    merci
    Chasseur de bug en activité
    L'erreur est humaine, mais pour vraiment foutre le bordel, on a besoin d'un ordinateur

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Merfolk Voir le message
    Bonjour,

    je chercherais à faire une sorte de système de "spool"
    - plusieurs traitements en parallèle, avec nombre max, et attente.

    exemple un script lancé toutes les minutes

    1) cherche un slot libre .. si (aucun) sleep ou exit
    2) lock slot
    3) traitement
    4) unlock slot


    je suis parti sur des fichiers locks, mais je me rends compte que ce que j'ai écris ça ne marchera pas (et me rappelle brutalement de la notion de mutex / semaphores)

    je n'ai pas envie d'écrire un mécanisme très complexe, ne veux pas utiliser des notions système avancée (genre placer des mutex)

    Est-ce qu'il existe une "lib" reconnue qui fasse quelque chose de similaire ?
    Ou une simple commande shell que je ne connaitrais pas ?

    algorithmiquement je souhaite faire quelque chose du genre :

    while (true)
    if quelque chose à faire
    attendre un emplacement libre
    go (quand commence / finit - utilise et libère l'emplacement)



    merci
    A base de shell, je verrais un truc de ce genre
    1) un dossier "spool" contenant n fichiers tous à 0
    2) dès que t'as un truc à faire, tu recherches dans spool un fichier vide file=$(find spool -type f -size 0 -maxdepth 1 -print |head -1)
    3) si tu trouves, if test -n "$file", tu le remplis et tu fais ton action puis tu le vides

    Ensuite, soit tu fais exécuter ton script par un cron, soit tu le mets en boucle infinie.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre régulier Avatar de Merfolk
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    merci pour la réponse, pas répondu plus tôt j'étais en vacances ;

    le système que tu proposes a a peu près les mêmes défaut que mon truc de fichiers.

    en fait si 2 scripts s'exécutent à la même seconde -> écrasage

    je pense qu'il n'y a pas moyen d'être 100%tranquille sans utiliser de "mutex like".


    mais je vais passer par une base de données pour logger & locker les traitements; car j'en ai besoin pour stats de toute façon

    je ferme ce topic
    Chasseur de bug en activité
    L'erreur est humaine, mais pour vraiment foutre le bordel, on a besoin d'un ordinateur

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Merfolk Voir le message
    en fait si 2 scripts s'exécutent à la même seconde -> écrasage
    Sauf si tu fais passer ton script au travers d'un pipe physique. Seul l'un des deux passera...

    Citation Envoyé par Merfolk Voir le message
    mais je vais passer par une base de données pour logger & locker les traitements; car j'en ai besoin pour stats de toute façon
    Comme tu le sens. D'ailleurs personnellement je ne sentais pas la solution shell vraiment adaptée...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo