logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 06-02-2020 05:57:19

LaFouine
Membre
Distrib. : Debian testing
Noyau : 4.19.0-4-amd64
(G)UI : Xfce
Inscription : 10-04-2017

Shell script trop lent

Bonjours,,

bon la source du problème c est moi je ne maîtrise pas le shell .

Le but en bref:

lire le fichier de configuration: /boot/config-4.19.0-6-amd64 et rechercher le matériel celons une liste (en principe le materiel qu'on veux).

la liste de l'utilisateur ci-desssous précise ce que l’utilisateur recherche. y ou m

CONFIG_RT2X00_LIB  y
CONFIG_ITCO_WDT  m
 



On compare les valeur et on affiche si c est identique ou pas.
voila c est que j'ai fait en gros , mai c est super lent le fichier fait quand même 6-8000 ligne



function ModuleOuKernel () {
if [ -n "$1" ] ;then
        Resgrep=`echo $1 | grep "$2" |cut -d"=" -f2`
        if [ -n "$Resgrep" ] ;then
                if [ $Resgrep == "m" ] && [ $Resgrep == "$3" ] ;then
                        echo "Ok 1: " $2$3
                sleep 2
                elif [ $Resgrep == "y" ] && [ $Resgrep == "$3" ] ;then
                        echo "Ok2: " $2$3
                sleep 2
                else
                        echo "Pour" $2 "il est demander " $3 "Et le resulta est"  $Resgrep
                sleep 2
                fi
        fi
fi
}
FF="/home/compil/.config
i=0
while read FL ;do

i=$((i+1))
        echo "
ligne : " $i
#       ModuleOuKernel $FL "
CONFIG_IGB=" "m"
ModuleOuKernel $FL "
CONFIG_IGB=" "y"
ModuleOuKernel $FL "
CONFIG_RT2800USB=" "y"
ModuleOuKernel $FL "
CONFIG_RT2X00_LIB=" "y"
ModuleOuKernel $FL "
CONFIG_ITCO_WDT=" "y"
ModuleOuKernel $FL "
CONFIG_MFD_CORE=" "y"
ModuleOuKernel $FL "
CONFIG_LPC_ICH=" "y"
ModuleOuKernel $FL "
CONFIG_DCA=" "y"
ModuleOuKernel $FL "
CONFIG_AUTOFS_FS=" "y"
ModuleOuKernel $FL "
CONFIG_CRYPTO_CRYPTD="
ModuleOuKernel $FL "
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=" "y"
ModuleOuKernel $FL "
CONFIG_IOSF_MBI=" "y"
ModuleOuKernel $FL "
CONFIG_PCIEPORTBUS=" "y"
ModuleOuKernel $FL "
CONFIG_SATA_AHCI=" "y"
ModuleOuKernel $FL "
CONFIG_ITCO_VENDOR_SUPPORT=" "y"
ModuleOuKernel $FL "
CONFIG_DRM_I915=" "y"
ModuleOuKernel $FL "
CONFIG_DRM_I915_ALPHA_SUPPORT=" "y"
ModuleOuKernel $FL "
CONFIG_DRM_I915_CAPTURE_ERROR=" "y"
ModuleOuKernel $FL "
CONFIG_DRM_I915_COMPRESS_ERROR=" "y"
ModuleOuKernel $FL "
CONFIG_DRM_I915_USERPTR=" "y"
ModuleOuKernel $FL "
CONFIG_USB_XHCI_HCD=" "y"
done < $FF



Je pense que grep n'est pas adapter, je suis entrain de regarder du coter de sed,
a moins que ce soie la machine qui peine, c'est pas une bête de course old_geek.gif


il est pas rare d'avoir oublier du matériel ou qu'il passe en module suite a une autre modification, du coup
je m'en sers juste après un make menuconfig

Merci d'avance

Dernière modification par LaFouine (06-02-2020 06:01:57)


Debian testing, nvidia 980 gtx sli, cm asurock 16 gb ram cpu i7 4,2 ghz

Hors ligne

#2 06-02-2020 19:59:52

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Shell script trop lent

#!/bin/bash

set +x

function ModuleOuKernel () {

    [[ $1 =~ ^($|#) || ! $1 =~ $2 ]] && return

    local value=${1#*=}

    case "$value$3" in
        mm) echo "Ok 1: $2$3" ;;
        yy) echo "Ok 2: $2$3" ;;
        *)  echo "Pour ${2%=}, il est demandé $3 Et le resultat est $value."
    esac
}

    FF="./compil/.config"
    while read FL ;do
        ModuleOuKernel "$FL" "CONFIG_IGB=" "y"
        ModuleOuKernel "$FL" "CONFIG_RT2800USB=" "y"
        ModuleOuKernel "$FL" "CONFIG_RT2X00_LIB=" "y"
        ModuleOuKernel "$FL" "CONFIG_ITCO_WDT=" "y"
        ModuleOuKernel "$FL" "CONFIG_MFD_CORE=" "y"
        ModuleOuKernel "$FL" "CONFIG_LPC_ICH=" "y"
        ModuleOuKernel "$FL" "CONFIG_DCA=" "y"
        ModuleOuKernel "$FL" "CONFIG_AUTOFS_FS=" "y"
        ModuleOuKernel "$FL" "CONFIG_CRYPTO_CRYPTD="
        ModuleOuKernel "$FL" "CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=" "y"
        ModuleOuKernel "$FL" "CONFIG_IOSF_MBI=" "y"
        ModuleOuKernel "$FL" "CONFIG_PCIEPORTBUS=" "y"
        ModuleOuKernel "$FL" "CONFIG_SATA_AHCI=" "y"
        ModuleOuKernel "$FL" "CONFIG_ITCO_VENDOR_SUPPORT=" "y"
        ModuleOuKernel "$FL" "CONFIG_DRM_I915=" "y"
        ModuleOuKernel "$FL" "CONFIG_DRM_I915_ALPHA_SUPPORT=" "y"
        ModuleOuKernel "$FL" "CONFIG_DRM_I915_CAPTURE_ERROR=" "y"
        ModuleOuKernel "$FL" "CONFIG_DRM_I915_COMPRESS_ERROR=" "y"
        ModuleOuKernel "$FL" "CONFIG_DRM_I915_USERPTR=" "y"
        ModuleOuKernel "$FL" "CONFIG_USB_XHCI_HCD=" "y"
    done < "$FF"



A noter, j'ai modifié le chemin de ta variable FF.

Hors ligne

#3 06-02-2020 21:52:23

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Shell script trop lent

Tu peux mettre ta liste d'options de compilation à tester dans un fichier :

cat list


CONFIG_IGB=y
CONFIG_RT2800USB=y
CONFIG_RT2X00_LIB=y
CONFIG_ITCO_WDT=y
CONFIG_MFD_CORE=y
CONFIG_LPC_ICH=y
CONFIG_DCA=y
CONFIG_AUTOFS_FS=y
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=y
CONFIG_IOSF_MBI=y
CONFIG_PCIEPORTBUS=y
CONFIG_SATA_AHCI=y
CONFIG_ITCO_VENDOR_SUPPORT=y
CONFIG_DRM_I915=y
CONFIG_DRM_I915_ALPHA_SUPPORT=y
CONFIG_DRM_I915_CAPTURE_ERROR=y
CONFIG_DRM_I915_COMPRESS_ERROR=y
CONFIG_DRM_I915_USERPTR=y



Cette liste, on peut ensuite la mettre dans un tableau dans le script.

Voici ce que ça donne en gnu awk:

#!/usr/bin/awk -f

BEGIN {
    FS="="
    while ( getline line < "list" )
    {
        split(line,col,"=")
        list[col[1]]=col[2]
    }
}

/^CONFIG/ {  
    if ( $1 in list )
    {
        switch (list[$1]$2)
        {
            case "mm": printf "Ok 1: %s=%s\n",$1,$2; break
            case "yy": printf "Ok 2: %s=%s\n",$1,$2; break
            default: printf "Pour %s, il est demandé %s Et le resultat est %s.\n",$1,list[$1],$2
        }
    }
}
 


Pour lancer le script gnu awk, s'il s'appelle "test.awk" :

./test.awk compil/.config | sort



Pense à mettre des droits en execution sur le script.

Dernière modification par Beta-Pictoris (06-02-2020 21:52:49)

Hors ligne

#4 06-02-2020 22:55:16

LaFouine
Membre
Distrib. : Debian testing
Noyau : 4.19.0-4-amd64
(G)UI : Xfce
Inscription : 10-04-2017

Re : Shell script trop lent

Supert yes.gif
Et je confirme c est vraiment plus rapide
Merci beaucoup

Dernière modification par LaFouine (06-02-2020 23:03:55)


Debian testing, nvidia 980 gtx sli, cm asurock 16 gb ram cpu i7 4,2 ghz

Hors ligne

#5 07-02-2020 03:01:54

naguam
Membre
Lieu : Quelque part
Distrib. : Plusieurs
Noyau : Ça dépend
(G)UI : La CLI il n'y a que ça de vrai!
Inscription : 13-06-2016

Re : Shell script trop lent

Après globalement une fois que tu as fait ta config avec menuconfig, que tu build, et tu reboote (si il manque du matos à supporter, re make menuconfig et rebuild et reboot).
Et ensuite la conf active est dans /boot.

cat "/boot/config-$(uname -r)"

Après tu peux la récupérer avec cp dans le .config de ton build, mais globalement make oldconfig ou olddefconfig le font tout seul.

Dernière modification par naguam (07-02-2020 03:16:50)

Hors ligne

#6 07-02-2020 09:22:43

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Shell script trop lent

J'ai fait une modification dans le script awk. J'ai retiré la fonction "in" que j'appliquais sur une table de hashage. kernal_panic.gif

#!/usr/bin/awk -f

BEGIN {
    FS="="
    while ( getline line < "list" )
    {
        split(line,col,"=")
        list[col[1]]=col[2]
    }
}

/^CONFIG/ {  
    if ( list[$1] )
    {
        switch (list[$1]$2)
        {
            case "mm": printf "Ok 1: %s=%s\n",$1,$2; break
            case "yy": printf "Ok 2: %s=%s\n",$1,$2; break
            default: printf "Pour %s, il est demandé %s Et le resultat est %s.\n",$1,list[$1],$2
        }
    }
}


Cela m'a réveillé en sursaut ce matin ! mrgreen.gif

Dernière modification par Beta-Pictoris (07-02-2020 09:27:44)

Hors ligne

Pied de page des forums