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

avec Java Discussion :

[Java I/O] Ouverture et écriture par plusieurs process Java


Sujet :

avec Java

  1. #1
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut [Java I/O] Ouverture et écriture par plusieurs process Java
    Bonjour,

    J'ai observé un comportement bizarre lors de tests avec des occurrences d'un programme Java lancés simultanément.

    Je lançais plusieurs occurrences d'un même programme sur une machine CentOS 6, via crontab, toutes les 8 minutes.
    Le soucis c'est que le programme se lançait et que mon script de démarrage ne vérifiait pas si une occurrence tournait déjà ou non. Donc au bout d'une demi-heure j'avais différents processus lancés.. Le soucis est que le programme écrit dans un fichier au même moment pour chaque occurrence. Du coup, le phénomène que j'ai observé était que les droits de mes fichiers de sortie, habituellement "rw- rw- r--" se sont transformés en "rw- r-- r--".
    Et depuis, mes fichiers de sortie gardent ces droits là, même en mono-instance de mon programme..
    Quelqu'un aurait-il une solution/explication ? Merci d'avance.

    Arkh

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Bonjour,

    Est-ce que la manipulation change aussi le propriétaire et/ou le groupe d'appartenance des fichiers ou ça n'a de répercutions que sur les attributs de droits d'accès ?
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Bonjour,

    Cela modifie juste les droits d'accès.

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    D'accord.
    Je ne vois pas encore ce qui c'est passé. Cependant, mon raisonnement me fait penser à la chose suivante. C'est comme si l'instance de votre programme voulait "verouiller" le fichier en écriture pour les autres, le temps d'écrire dedans, mais il ne libererait pas ce verouillage à l'issue, une sorte d'accès exclusif... Enfin, c'est une idée.

    Pour précision, les fichiers sont-ils créés par votre programme, ou seulement manipulés. Genre, le premier qui tente d'y accéder le crée s'il n'existe pas, les suivants utilisent le fichier ainsi créé et se contentent de le manipuler ?

    Est-ce que le problème c'est présenté uniquement suite au lancement de plusieurs instances, ou le programme a été modifié et recompilé au même moment ?

    Avez-vous par hasard changé de dossier de stockage pour ces fichiers au même moment ?

    En fait, sans rentrer dans les détails des traitements, pouvez-vous me préciser étape par étape le processus de création/manipulation uniquement pour ce qui concerne l'écriture/ouverture de ces fichiers ?

    Dernier détail :
    Quelle version de Java ?
    Et, le programme il tourne sur la même machine que celle sur laquelle il est développé ? Dans le cas contraire, ce sont les mêmes OS ?

    Bref, voilà les questions que je me pose lorsque je tente de comprendre votre problème. Je me permets donc de vous les poser.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Bonjour,

    Je vous réponds dans votre message :


    D'accord.
    Je ne vois pas encore ce qui c'est passé. Cependant, mon raisonnement me fait penser à la chose suivante. C'est comme si l'instance de votre programme voulait "verouiller" le fichier en écriture pour les autres, le temps d'écrire dedans, mais il ne libererait pas ce verouillage à l'issue, une sorte d'accès exclusif... Enfin, c'est une idée.

    J'aime votre raisonnement, il m'inspire confiance.

    Pour précision, les fichiers sont-ils créés par votre programme, ou seulement manipulés. Genre, le premier qui tente d'y accéder le crée s'il n'existe pas, les suivants utilisent le fichier ainsi créé et se contentent de le manipuler ?
    Exactement ça.

    Est-ce que le problème c'est présenté uniquement suite au lancement de plusieurs instances, ou le programme a été modifié et recompilé au même moment ?
    Uniquement lors du lancement de plusieurs instances du programme, pas de recompilation au même moment.

    Avez-vous par hasard changé de dossier de stockage pour ces fichiers au même moment ?
    Non

    En fait, sans rentrer dans les détails des traitements, pouvez-vous me préciser étape par étape le processus de création/manipulation uniquement pour ce qui concerne l'écriture/ouverture de ces fichiers ?

    - check if file exists :
    - si oui, on ecrase
    - si non on le cree et on ecrit dedans


    Dernier détail :
    Quelle version de Java ? Java 6
    Et, le programme il tourne sur la même machine que celle sur laquelle il est développé ? Dans le cas contraire, ce sont les mêmes OS ? CentOS environnement de compilation, programme installé sur RHEL6

    Bref, voilà les questions que je me pose lorsque je tente de comprendre votre problème. Je me permets donc de vous les poser.


    Bien à vous,
    Arkh

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Merci pour votre compliment, c'est toujours agréable de partager ses idées, même si elle ne sont pas toujours bonnes.
    Bref, quoi qu'il en soit, je commence à me demander si c'est java qui réagit, ou l'OS...
    Avez-vous réaliser l'opération sur les deux machines et obtenu la même chose, ou bien cela ne se produit-il que sur le poste redhat ?
    Pourriez-vous me rafraîchir la mémoire, au niveau des droits sur les fichiers.
    De souvenir, le premier groupe, celui de gauche, dans votre exemple valant toujours rw- représente bien les droits du créateur/propriétaire du fichier, les trois suivant, ceux du groupe d'appartenance généralement le même que le groupe d'appartenance du créateur/propriétaire, et le dernier, le reste du monde ?...
    Donc, cela n'agit qu'au niveau du groupe, c'est ce qui me surprend le plus, à moins que mes souvenirs soient inexactes.
    Je vais regarder ce qui se dit du côté de la gestion des droits au niveau système de fichier en Java.
    Dernière chose, sur le poste redhat, vous exploitez quel système de fichier ?

    J'espère ne pas vous faire perdre votre temps car franchement, ce n'est pas évident, et je ne voudrai pas vous embarquer dans une mauvaise direction...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. ouverture d'application par un programme JAVA
    Par gg22590 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 12/05/2009, 07h44
  2. Ouverture du client messagerie par defaut en java
    Par jeanfeu dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2008, 09h20
  3. Synchro de l'écriture sur un fichier par plusieurs processus
    Par tnarol dans le forum Threads & Processus
    Réponses: 1
    Dernier message: 08/04/2008, 17h38
  4. Réponses: 5
    Dernier message: 04/06/2007, 21h23
  5. Identifier les fichiers en cours d'écriture par un process ext
    Par sinmaniphel dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 24/01/2007, 09h22

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