Outils pour utilisateurs

Outils du site


linux:scripts_awk:start

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:scripts_awk:start [16/03/2010 15:57]
daniel ajout monitoring
linux:scripts_awk:start [17/10/2019 11:11] (Version actuelle)
daniel [Lister les IP et le nb d'accès d'un log www]
Ligne 1: Ligne 1:
 ====== Scripts awk ====== ====== Scripts awk ======
- +Docs 
-Une doc sur awk : http://people.cs.uu.nl/piet/docs/nawk/nawk_toc.html +  http://people.cs.uu.nl/piet/docs/nawk/nawk_toc.html 
- +  * https://www.tutorialspoint.com/awk/index.htm 
-Quelques règles et bout de scripts (cf http://cli.asyd.net/home/filtres/awk)+  * [FR] http://www.shellunix.com/awk.html
  
 Attention aux locales !!! (merci à Christophe Martin de la liste shell@asyd.net), autant pour le séparateur décimal (la virgule en fr) que les règles de collation min/maj : Attention aux locales !!! (merci à Christophe Martin de la liste shell@asyd.net), autant pour le séparateur décimal (la virgule en fr) que les règles de collation min/maj :
Ligne 30: Ligne 30:
  
 ===== Syntaxe ===== ===== Syntaxe =====
 +
 ==== Boucle for ==== ==== Boucle for ====
 <code awk> <code awk>
Ligne 38: Ligne 39:
   print "\""fich"\";"$6";"$7";"$5   print "\""fich"\";"$6";"$7";"$5
 }' }'
 +</code>
 +
 +==== Lister les IP et le nb d'accès d'un log www ====
 +<code awk>
 +awk '{nb[$1]++} END {for (ip in nb) print ip "\t" nb[ip]}' < access.log
 +</code>
 +
 +Ou si on veut le reverse
 +<code awk>
 +awk '{nb[$1]++} END {for (ip in nb) {system("/usr/bin/host " ip "|cut -d '"' '"' -f 5;print "\t" ip "\t" nb[ip]}}' < access.log
 +</code>
 +
 +==== Compter les hits et afficher les heures qui dépassent un nb de hits ====
 +
 +<code awk>
 +awk -F : '{nb[$2][$3]++} END {for (h in nb) {for (m in nb[h]) if (nb[h][m] > 9999) printf("%s:%s %d\n", h, m, nb[h][m])}}' < access.log > access.highfreq.log
 </code> </code>
 ===== Exemples ===== ===== Exemples =====
Ligne 51: Ligne 68:
   {if (fout!=0) { print $0 > fout;new=0}}' < tous_les_virtualhosts_confondus.conf   {if (fout!=0) { print $0 > fout;new=0}}' < tous_les_virtualhosts_confondus.conf
 </code> </code>
 +
 +
  
 ==== Monitoring de processus ==== ==== Monitoring de processus ====
Ligne 63: Ligne 82:
   echo "usage: $(basename $0) -n <nb de mesures> -i <intervalle entre deux mesures> -s <duree d'attente avant de retester pour relancer une série> -p <process à surveiller>"   echo "usage: $(basename $0) -n <nb de mesures> -i <intervalle entre deux mesures> -s <duree d'attente avant de retester pour relancer une série> -p <process à surveiller>"
   echo "Tous les arguments sont facultatifs";   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 "n:i:s:p:" OPTION+while getopts "n:i:s:p:h" OPTION
 do do
   case $OPTION in   case $OPTION in
Ligne 72: Ligne 93:
     s ) SLEEP_DELAY=$OPTARG;;     s ) SLEEP_DELAY=$OPTARG;;
     p ) PROCESS=$OPTARG;;     p ) PROCESS=$OPTARG;;
-    ) usage;;+    ) usage;;
   esac   esac
 done done
Ligne 80: Ligne 101:
 do do
   sleep $SLEEP_DELAY   sleep $SLEEP_DELAY
-  PID=$(pidof java|awk '{print $1}')+  PID=$(pidof $PROCESS|awk '{print $1}')
   while [ "$PID" != '' ]   while [ "$PID" != '' ]
   do   do
-    echo "Y'a un java qui tourne, on fait $NBMES mesures en $(echo "$NBMES * $INTER"|bc)s"+    echo "Y'a un $PROCESS qui tourne, on fait $NBMES mesures en $(echo "$NBMES * $INTER"|bc)s"
     top -b -n $NBMES -d $INTER -p $PID|env LANGUAGE=C LANG=C awk -v pid=$PID '     top -b -n $NBMES -d $INTER -p $PID|env LANGUAGE=C LANG=C awk -v pid=$PID '
 BEGIN { BEGIN {
Ligne 110: Ligne 131:
     PID=$(pidof java|awk '{print $1}')     PID=$(pidof java|awk '{print $1}')
   done   done
-  echo 'Pas de process java en cours, on attend ("Ctrl + cpour arrêter)'+  echo "Pas de process $PROCESS en cours, on attend ('Ctrl + cpour arrêter)"
 done done
 </code> </code>
linux/scripts_awk/start.1268751454.txt.gz · Dernière modification: 16/03/2010 15:57 de daniel