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 :

nawk crée des processus defunct


Sujet :

Linux

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 85
    Par défaut nawk crée des processus defunct
    Bonjour,

    J'ai un script ksh sous Solaris 10 qui utilise nawk pour traiter deux fichiers afin d'en créer un troisième.
    Le script créer des processus en <defunct> et met enormement de temps à se terminer alors que les deux fichiers traités ne font que 24Mo et 3,5Mo.
    J'aimerai bien modifier mon script pour corriger le bug qui créer ces processus en <defunct> et ralenti le traitement mais je ne vois pas ce qui ne marche pas.
    Le script est plus long avec d'autre awk qui crée aussi des defunct mais je l'ai tronqué car si je corrige le bug ici, je pourrai le corriger le reste du script.

    Merci.

    Voici les 10 première ligne des deux fichiers traités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    head -10 fic_tmp2_22936
     group              ss created     client      retent  ssid             total nfiles pool          lvl fl name                           browse
    SVI_Incr_SystAppli_Quot_ma 12/30/09 03:36:43 ivr5_oem 01/06/10 372948155 8341212 157 SFRIncrAllQuot1 incr cE /cdr                        01/06/10
    SVI_Incr_SystAppli_Quot_ma 12/30/09 03:36:45 scp1_oem 01/06/10 339393725 4654248 24 SFRIncrAllQuot1 incr cE /logs                        01/06/10
    SVI_Incr_SystAppli_Quot_ma 12/30/09 03:36:45 pfs4_oem 01/06/10 322616509 268812 20 SFRIncrAllQuot1 incr cE /logs                         01/06/10
    SVI_Incr_SystAppli_Quot_ma 12/30/09 03:36:47 om1_oem 01/06/10 289062079 193478524 25 SFRIncrAllQuot1 incr cE /logs                       01/06/10
    SVI_Incr_SystAppli_Quot_ma 12/30/09 03:36:44 scp1_oem 01/06/10 356170940 35555512 210 SFRIncrAllQuot1 incr cE /cdr                       01/06/10
    SFBOX_Incr_ConfSystAppli_Quot_Sa 12/30/09 04:16:00 xsavec1 01/06/10 2621097456 4 0 SFRIncrAllQuot1 incr cE /btsave/ty_data               12/31/09
    SFBOX_Incr_ConfSystAppli_Quot_Sa 12/30/09 04:16:02 xsavec1 01/06/10 2587543026 4 0 SFRIncrAllQuot1 incr cE /btsave/ty_exec               12/31/09
    NOC_OVIS_Incr_SysAppli_Quot_ma 12/30/09 04:16:09 ch3svcip03 01/06/10 2570765817 4183636 4 SFRIncrAllQuot1 full ca SYSTEM STATE:\         01/06/10
    MET_Incr_ConfSystAppli_quot_ma 12/30/09 04:17:32 sts1 01/06/10 1597687372 8041411968 111 SFRIncrAllQuot1 incr cE /u01                    12/31/09

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    head -10 fic_tmp5_22936 
    yes;bdd2;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;4;;0;/u00/app/oracle/admin
    !/u00/app/oracle
    !/
    !/u90/oracle/backup;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;bdd3;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;3;;0;/u00/app/oracle/admin
    !/u00/app/oracle
    !/;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;ctc1;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;3;;0;/
    !/apps/apache/current/logs
    !/apps/data/logs;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;ctc2;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;3;;0;/
    !/apps/apache/current/logs
    !apps/data/logs;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;ctc3;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;3;;0;/
    !/apps/apache/current/logs
    !/apps/data/logs;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;fr-ctc-bdd1;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;1;;0;All;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;fr-ctc-bdd2;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;1;;0;All;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;fr-ctc-bdd3;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;1;;0;All;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;jumpstart;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;1;;0;/apps/infra;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log
    yes;bdd1;inconnu;;CTC_Full_ConfSystAppli_Hebdo;02/04/10 05:00:01;02/04/10 05:00:13;OK;skip;3;;0;/u00/app/oracle/admin
    !/u00/app/oracle
    !/;/nsr/logs/groups/CTC_Full_ConfSystAppli_Hebdo/CTC_Full_ConfSystAppli_Hebdo_Success_20100204-050015.log

    Et voila le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    #!/usr/bin/ksh
    set -x
    TMPreport3=fic_tmp5_22936 
    MMINFORES=fic_tmp2_22936 
     
    # ==> Lecture de MMINFORES pour recuperer des infos
    #Passage de la variable existonly
    #TMPreport3 : group date heure client rentention ssid taille nbfile pool level sumflags saveset browse policy
    cat $TMPreport3 | nawk -v existonly=$EXISTONLY '
        BEGIN {
               #$1 $2 $3 ... issue du fichier $MMINFORES
               #Creation de plusieurs tableau avec pour cle le ssid (source MMINFORES)
               while ("cat '$MMINFORES'" | getline) {
                   dsave[$6]="20"substr($2,7,2)substr($2,1,2)substr($2,4,2)substr($3,1,2)substr($3,4,2)substr($3,7,2)
                   dretent[$6]=substr($5,7,2)substr($5,1,2)substr($5,4,2)
                   group[$6]=$1
                   client[$6]=$4
                   level[$6]=$10
                   nbfiles[$6]=$8
                   taille[$6]=$7
                   pool[$6]=$9
                   isEll[$6]=match($11,"E")
                   ss[$6]=$12
               }
               FS=";"
        }
        {
              #Traitement des sauvegarde a no
              #$1 $2.. correspond au champ du fichier TMPreport3
              if ( $1 == "no" ) {
                 if ( existeSVG[$2":"$3":"$4] != "yes" ) {
                    existeSVG[$2":"$3":"$4]="no"
                 }
              }
              else {
              #Traitement des sauvegarde a yes
                 ddebut="20"substr($6,7,2)substr($6,1,2)substr($6,4,2)substr($6,10,2)substr($6,13,2)substr($6,16,2)
                 dfin="20"substr($7,7,2)substr($7,1,2)substr($7,4,2)substr($7,10,2)substr($7,13,2)substr($7,16,2)
                 STATUS=$8
                 if ($6 == ""){
                     DEBUT_SAUVEGARDE=""
                 }
                 else{
                     DEBUT_SAUVEGARDE=substr($6,4,2)"/"substr($6,1,2)"/"substr($6,7,2)" "substr($6,10,5)
                 }
                 if($7 == ""){
                     FIN_SAUVEGARDE=""
                 }
                 else{
                     FIN_SAUVEGARDE=substr($7,4,2)"/"substr($7,1,2)"/"substr($7,7,2)" "substr($7,10,5)
                 }
                 RETENTION=0
                 NBSAVESETS=0
                 LEVEL=""
                 NBFILES=0
                 TAILLE=0
                 sase=""
                 for (i in dsave) {
                    if ( client[i] == $2 && group[i] == $5 && ddebut <= dsave[i] && dsave[i] <= dfin) {
                       NBSAVESETS+=1
                       if ( dretent[i] > RETENTION) RETENTION=dretent[i]
                       if ( LEVEL != "full" ) LEVEL=level[i]
                       NBFILES+=nbfiles[i]
                       TAILLE+=taille[i]
                       if (isEll[i] !=0) {recyc="E"} else {recyc=""}
                       if ( sase != "" ) {
                          sase=sase"
    !"ss[i]
                       } else {
                          sase=ss[i]
                       }
                    }
                 }
     
                 if ( RETENTION != 0 ) {
                    RETENTION=substr(RETENTION,5,2)"/"substr(RETENTION,3,2)"/"substr(RETENTION,1,2)
                    print $2";"$3";"$4";"$5";"$8";"DEBUT_SAUVEGARDE";"FIN_SAUVEGARDE";"int(TAILLE/1048576)";"RETENTION";"NBFILES";"NBSAV
    ESETS";"LEVEL";"recyc";"sase";"$14
                    existeSVG[$2":"$3":"$4]="yes"
                 }
                 else {
                    print $2";"$3";"$4";"$5";"$8";"DEBUT_SAUVEGARDE";"FIN_SAUVEGARDE";"$11";"";"$12";"$10";"$9";E;"$13";"$14
                    if ( existeSVG[$2":"$3":"$4] != "yes") {
                       existeSVG[$2":"$3":"$4]="no"
                    }
                 }
              }
        }
        END {
              if ( existonly == "no") {
                 for (i in existeSVG) {
                    if ( existeSVG[i] != "yes" ) {
                       split(i,memb,":")
                       print memb[1]";"memb[2]";"memb[3]";Nogroup;Disabled;;;;;;;;;"
                    }
                 }
              }
        }' | sort -t";" -k 2,2 > sortie

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 85
    Par défaut
    Je crois avoir compris, c'est le fait de lancer un while ("cat '$MMINFORES'" | getline) {, il vaudrait mieux que j'utilise un open.
    Je vais essayer.

Discussions similaires

  1. [C#] Configuration du niveau de priorite des processus
    Par stephdiplo150 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/04/2007, 23h29
  2. faire un petit menu qui lance des processus
    Par tomsoyer dans le forum Linux
    Réponses: 4
    Dernier message: 30/11/2004, 18h37
  3. lancer des processus
    Par dylan dans le forum Général Python
    Réponses: 2
    Dernier message: 10/06/2004, 14h02
  4. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 11h12
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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