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

Java Discussion :

Exécuter une commande linux dans X threads en parallèle


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 96
    Points : 63
    Points
    63
    Par défaut Exécuter une commande linux dans X threads en parallèle
    Bonjour,

    J'ai besoin dans mon application de faire des appels à la commande linux md5sum.
    Je dois calculer ces sommes md5 sur X fichiers en parallèle.
    J'ai donc créé X classes étendant Runnable que j'ai mis dans un ThreadExecutor (librairie concurrent), chaque classe instantiant son objet Process et exécutant la commande md5sum -b mon_fichier.

    Tout marche bien pendant un certain temps (un certain nombre de threads se terminent correctement, mais au bout d'un moment, lors du process.execute(macommande), une IOException est levée me disant:

    java.io.IOException: Cannot run program "md5sum": java.io.IOException: error=24, Trop de fichiers ouverts

    J'ai bien vérifié que lorsque mes threads se terminent, les in, out et errstrem du process sont bien fermées.

    Avez-vous une idée d'où peut venir le problème?

    Merci d'avance,
    Nico

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Peut-être une erreur produite par l'OS lui-même. Tu traites combien de fichiers en parallèles ?

  3. #3
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Ptit coup de Google => http://bugs.sun.com/bugdatabase/view...bug_id=6462165

    Tu utilises la dernière version de Java ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Peut-être une erreur produite par l'OS lui-même. Tu traites combien de fichiers en parallèles ?
    Sachant que j'ai un pool de 10 threads avec une commande systeme pr thread, je dirai 10 au maximum.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par natha Voir le message
    Ptit coup de Google => http://bugs.sun.com/bugdatabase/view...bug_id=6462165

    Tu utilises la dernière version de Java ?
    J'utilise le JDK 1.6 update 4.
    Je vais vérifier que je ferme bien toutes les streams du process avant de détruire le process lui-même mais il me semble que c'est ce que je fais...
    Je vous tiens au courant demain matin.

    Par contre, comment savoir sur quelle version du jdk porte ce bug? Je n'ai pas vu d'info à ce sujet dans le bug report...

    Nico

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par sanchou Voir le message
    Par contre, comment savoir sur quelle version du jdk porte ce bug? Je n'ai pas vu d'info à ce sujet dans le bug report...
    Aucune idée et c'est pas tout jeune.

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pour moi ce n'est pas un bug : il faut fermer les flux du Process.
    Si ce n'est pas fait le flux reste logiquement ouvert.


    a++

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    A priori j'ai résolu mon problème en faisant des appels explicites au garbage collector (après avoir fermer toutes les streams).

    En fermant uniquement les streams, aucun changement.

    Merci de vos réponses

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    On pourrait voir ton code ?

    a++

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

Discussions similaires

  1. Exécuter une commande Linux sur un serveur dans un réseau
    Par majorsall84 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 23/07/2010, 19h14
  2. lancer une commande linux dans un script perl
    Par hammag dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2007, 16h18
  3. Réponses: 1
    Dernier message: 21/08/2007, 18h02
  4. Exécuter une commande linux.
    Par casafa dans le forum Linux
    Réponses: 4
    Dernier message: 20/07/2005, 23h13
  5. Réponses: 2
    Dernier message: 24/06/2003, 20h31

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