linux:scripts_awk:start
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
linux:scripts_awk:start [20/02/2009 15:38] – créée daniel | linux:scripts_awk:start [05/11/2010 13:14] – daniel | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Scripts awk ====== | ====== Scripts awk ====== | ||
- | Une doc sur awk : http:// | + | Une doc sur awk : http:// |
Quelques règles et bout de scripts (cf http:// | Quelques règles et bout de scripts (cf http:// | ||
+ | |||
+ | Attention aux locales !!! (merci à Christophe Martin de la liste shell@asyd.net), | ||
+ | |||
+ | <code bash> | ||
+ | echo 'Un test | ||
+ | une autre ligne' | env LANGUAGE=fr_FR.UTF-8 LANG=fr_FR.UTF-8 awk '/ | ||
+ | Un test | ||
+ | une autre ligne | ||
+ | |||
+ | echo 'Un test | ||
+ | une autre ligne' | env LANGUAGE=C LANG=C awk '/ | ||
+ | une autre ligne | ||
+ | |||
+ | echo '1.2 1, | ||
+ | 10 13 | ||
+ | echo '1.2 1, | ||
+ | 12 10 | ||
+ | </ | ||
+ | |||
+ | Donc, il vaut mieux assurer avec un alias du genre | ||
+ | <code bash> | ||
+ | alias awk=' | ||
+ | </ | ||
+ | (LC_ALL devrait suffire, mais ça mange pas de pain...) | ||
===== Syntaxe ===== | ===== Syntaxe ===== | ||
+ | |||
==== Boucle for ==== | ==== Boucle for ==== | ||
<code awk> | <code awk> | ||
Ligne 15: | Ligne 40: | ||
}' | }' | ||
</ | </ | ||
+ | |||
+ | ==== Lister les IP et le nb d' | ||
+ | <code awk> | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | Ou si on veut le reverse | ||
+ | <code awk> | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
===== Exemples ===== | ===== Exemples ===== | ||
+ | |||
==== Découper un fichier ==== | ==== Découper un fichier ==== | ||
Ligne 27: | Ligne 64: | ||
</ | </ | ||
+ | |||
+ | |||
+ | ==== Monitoring de processus ==== | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | NBMES=10 | ||
+ | INTER=0.5 | ||
+ | SLEEP_DELAY=1 | ||
+ | PROCESS=java | ||
+ | |||
+ | function usage() { | ||
+ | echo " | ||
+ | echo "Tous les arguments sont facultatifs"; | ||
+ | echo "Par défaut on a $NBMES mesures, toutes les ${INTER}s avec un délai de ${SLEEP_DELAY}s entre deux tests sur le process $PROCESS" | ||
+ | exit; | ||
+ | } | ||
+ | | ||
+ | while getopts " | ||
+ | do | ||
+ | case $OPTION in | ||
+ | n ) NBMES=$OPTARG;; | ||
+ | i ) INTER=$OPTARG;; | ||
+ | s ) SLEEP_DELAY=$OPTARG;; | ||
+ | p ) PROCESS=$OPTARG;; | ||
+ | h ) usage;; | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | PID='' | ||
+ | while [ " | ||
+ | do | ||
+ | sleep $SLEEP_DELAY | ||
+ | PID=$(pidof $PROCESS|awk ' | ||
+ | while [ " | ||
+ | do | ||
+ | echo " | ||
+ | top -b -n $NBMES -d $INTER -p $PID|env LANGUAGE=C LANG=C awk -v pid=$PID ' | ||
+ | BEGIN { | ||
+ | minC=100; maxC=0; moyC=0; minM=100; maxM=0; moyM=0.0; | ||
+ | } | ||
+ | $0 ~ pid { | ||
+ | i++; | ||
+ | if ($9 <minC) {minC=$9}; | ||
+ | if ($9 > maxC) {maxC=$9}; | ||
+ | moyC += $9; | ||
+ | if ($10 <minM) {minM=$10}; | ||
+ | if ($10 > maxM) {maxM=$10}; | ||
+ | moyM += $10; | ||
+ | print "CPU: " $9 "% \tRAM: " $10 " | ||
+ | } | ||
+ | END { | ||
+ | if (i>0) { | ||
+ | print "Sur " i " itérations"; | ||
+ | print "CPU => min: " minC " | ||
+ | print "RAM => min: " minM " | ||
+ | } | ||
+ | else { | ||
+ | print " | ||
+ | } | ||
+ | }' | ||
+ | PID=$(pidof java|awk ' | ||
+ | done | ||
+ | echo "Pas de process $PROCESS en cours, on attend ('Ctrl + c' pour arrêter)" | ||
+ | done | ||
+ | </ |
linux/scripts_awk/start.txt · Dernière modification : 17/10/2019 11:11 de daniel