linux:scripts_awk:start
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| linux:scripts_awk:start [13/03/2010 15:44] – rmqs locales daniel | linux:scripts_awk:start [17/10/2019 11:11] (Version actuelle) – [Lister les IP et le nb d'accès d'un log www] daniel | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Scripts awk ====== | ====== Scripts awk ====== | ||
| - | + | Docs | |
| - | Une doc sur awk : http:// | + | |
| - | + | * https://www.tutorialspoint.com/awk/index.htm | |
| - | Quelques règles et bout de scripts (cf http://cli.asyd.net/home/filtres/awk) | + | * [FR] http:// |
| Attention aux locales !!! (merci à Christophe Martin de la liste shell@asyd.net), | Attention aux locales !!! (merci à Christophe Martin de la liste shell@asyd.net), | ||
| Ligne 30: | Ligne 30: | ||
| ===== Syntaxe ===== | ===== Syntaxe ===== | ||
| + | |||
| ==== Boucle for ==== | ==== Boucle for ==== | ||
| <code awk> | <code awk> | ||
| Ligne 38: | Ligne 39: | ||
| print " | print " | ||
| }' | }' | ||
| + | </ | ||
| + | |||
| + | ==== Lister les IP et le nb d' | ||
| + | <code awk> | ||
| + | awk ' | ||
| + | </ | ||
| + | |||
| + | Ou si on veut le reverse | ||
| + | <code awk> | ||
| + | awk ' | ||
| + | </ | ||
| + | |||
| + | ==== Compter les hits et afficher les heures qui dépassent un nb de hits ==== | ||
| + | |||
| + | <code awk> | ||
| + | awk -F : ' | ||
| </ | </ | ||
| ===== Exemples ===== | ===== Exemples ===== | ||
| + | |||
| ==== Découper un fichier ==== | ==== Découper un fichier ==== | ||
| Ligne 51: | Ligne 69: | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ==== 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.1268491471.txt.gz · Dernière modification : 13/03/2010 15:44 de daniel