• [^] # Re: ça avance :-)

    Posté par (site web personnel, Mastodon) . En réponse au message [résolu] visualiser charge CPU et mémoire | mesurer l'efficience. Évalué à 1.

    Merci merci pour le temps, les conseils et snippets. J'ai la joie: grâce à tes conseils (et les autres aussi!) je suis parvenu à une version de script bash satisfaisante. Il y aurait plein de trucs à ajouter et optimiser, comme l'ajout du nom de la personne testeuse, le formatage du fichier de sortie selon la date et ce nom et même la création d'un histogramme directement avec gnuplot. Mais bon j'ai d'autres choses à préparer pour cette expérience; il faut savoir s'arrêter, même si je commence à ressentir pas mal de plaisir à bidouiller ce script.
    Parce que j'ai appris plein de choses, des commandes de base de linux certes, mais ausi des méthodes et une certaine logique. Le set -x est magique pour comprendre la logique du programme notamment!

    #!/bin/sh
    # avec l'aide de la communauté linuxfr
    # https://linuxfr.org/forums/linux-general/posts/visualiser-charge-cpu-et-memoire-mesurer-l-efficience
    #set -x
    # Création du fichier de sortie
    outputfile="0000.csv"
    rm -vf "$outputfile"
    # -v pour afficher ce qui se passe (à utiliser si tu es en mode interactif)
    # -f au cas où tu aurais un alias avec -i
    # ou si tu lances en tant qu'un autre compte (mais ne marchera que pour root)
    # Définition du nombre de thread et/ou processeurs pour normaliser le load average
    command -v nproc && NbrCrs=$(nproc --all) || NbrCrs=1 # double pipe "||": si la commande existe on l'utilise sinon on ne tient pas compte du nbr de cœurs
    TheTime=$(date +"%T")
    Time=$(date)
    Sysinfo=$(lsb_release -a)
    #Informations système
    printf '%s\t%s\t\n%s\t%s\t\n%s\t\n' "Date:" "$Time" "Mémoire totale:" "$TotMem" "$Sysinfo" >> $outputfile
    # Inscription des entêtes du fichier de sortie
    printf '%s\t%s\t%s\t%s\t%s\t\n' "Timestamp" "Mémoire disponible" "Charge CPU" >> $outputfile
    # Enregistrement des données dans le fichier de sortie
    while true;
    do
    # Définition des variables
    AvMem=$(free -t | awk '/Mem:/ {print 7ドル}') # mémoire disponible
    TotMem=$(free -t | awk '/Mem:/ {print 2ドル}') # mémoire totale
    TheLoad=$(uptime | awk -v N=$NbrCrs '{print 10ドル/N}') # load average de la dernière
    printf '%s\t%s\t%s\t%s\t\n' "$TheTime" "$AvMem" "$TheLoad" >> $outputfile
    sleep 2
    done