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

AIX Discussion :

There is not enough memory available now


Sujet :

AIX

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 13
    Points : 8
    Points
    8
    Par défaut There is not enough memory available now
    Bonjour à tous,

    sur un Aix 5.3.0.0 j'ai un fichier texte d'un peu plus de 400 000 lignes (fichier amené à grossir rapidement).

    J'ai créé une fonction afin de lister certaines informations. En gros le but est de grouper les informations de même type afin de les comptabiliser.

    Voici un exemple de ligne dans le fichier texte:

    200810171829:R:AXXX

    Et voici la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function nb_recep_echange
    {
    for j in `cut -c 1-8 $fic|sort|uniq`
    do
            for i in `cut -f2 -d" " $fic|sort|uniq`
            do
                    a=`grep $j $tmp3|grep $i|sort|uniq|wc -l`
                    echo $j":"$i":""R"":"$a
            done
    done
    }
    Malheureusement pour moi j'ai le message d'erreur "not enough memory".

    Si quelqu'un avait une solution je suis preneur.

    Merci.

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Il faut que tu trouves une solution pour ne pas enchainer les commandes comme ca : la complexite algorithmique est trop grande, ce qui peut entrainer le probleme que tu decris.

    Peux-tu nous dire ce que tu souhaites faire, et nous donner un exemple (dans ton exemple, il n'y a pas d'espace, donc la seconde boucle for ne sert a rien).
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonjour et merci pour la réponse.

    Le principe est assez simple en fait.

    Sur la base de 200810171829:R:AXXX j'ai donc

    DATE:SENS:TYPE

    J'ai donc besoin de faire une somme par "DATE" par "SENS" et par "TYPE".

    Pour une même "DATE" et un même "SENS" j'ai plusieurs "TYPE".

    Je cherche un faire quelque chose comme:

    DATE:SENS:AXXX:NB_DE_AXXX

    soit par exemple:

    20081017:R:AXXX:1000 (les HH:MM ne rentre pas en compte)

    J'ai tellement de lignes que le système ne sait plus gérer. Je pensais éventuellement à du awk mais ma connaissance est trop limitée.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    Cela pourra peut être t'aider

    calcul du nombre d'occurrence non identique de la première colonne

    soit le awk va cheker toutes les lignes du tableau
    - l'argument F lui dit qu'elle est le séparateur de colonnes ici les ":"
    - ensuite tu ne veux que la première colonne $1 et sur monfichier
    - mis dans un pipe "|" (il garde la sortie en mémoire pour les retraiter)
    - "sort -u" élimine les doublons
    - re pipe
    - wc -l calcul le nombre de ligne qu'il y a dans la sortie

    si c'est trop long tu nous le dis, il est possible dans le awk de faire ce calcul d'une manière séquentiel ( par 5000 lignes ou par 10000 cela dépend de la lourdeur du fichier mais awk prend peux de mémoire pour cela en revanche une boucle for garde tout en mémoire pour en fin te sortir le résultat donc la petit crash de la commande... ça arrive ;-)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F":" '{print $1}' monfichier | sort -u | wc -l
    NB : tu peux additionner des colonnes par exemple la colonne 1 et 3 et 7 avec les ":" entre les champs (ou colonne comme tu souhaites c'est pareil dans ce cas ci) pour une sortie tempo pour continuer et conserver le séparateur de champs ":" avec une sortie d'un fichier temporaire que tu retraite derrière...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F":" '{print $1":"$3":"$7} ' | grep $madate | sort -u > fichiertempo

    etc ...

    Cordialement

    NB si ça peut t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MONFICHIER=test
    MADATE=20081017
     
    export NBDSMYFILE=$(awk '{print substr($0,1,8) substr($0,13,$NF)}' $MONFICHIER | grep $MADATE | wc -l )
     
    awk '{print substr($0,1,8) substr($0,13,$NF)":"ENVIRON["NBDSMYFILE"] }' $MONFICHIER | sort -u
    Cordialement

Discussions similaires

  1. [IDE] Not enough timers available
    Par Pascale38 dans le forum C++Builder
    Réponses: 10
    Dernier message: 20/03/2013, 16h11
  2. [WD14] Not enough storage is available to process this command? Pourquoi
    Par chapeau_melon dans le forum WinDev
    Réponses: 0
    Dernier message: 28/05/2009, 07h51
  3. (debutant) The command or action "Find" is not available now
    Par tounepistols dans le forum Access
    Réponses: 7
    Dernier message: 10/08/2006, 15h22
  4. [ORA-00371] Not enough shared pool memory !!!
    Par max44410 dans le forum Installation
    Réponses: 6
    Dernier message: 30/11/2005, 19h47

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