#!/bin/bash # uno script che senza sosta, ogni 10 secondi, logga un messaggio etichettato local1.info contenente (su di un'unica riga) la quantità di RAM libera e la tripla username/pid/comando del processo che sta consumando più CPU # while true ; do { #ricava RAM libera come numero di byte FREERAM=$(free | head -n 2 | tail -n +2 | awk '{print $3}') #crea file temporaneo e vi scrive la riga di interesse, quella relativa al processo che consuma più CPU TEMP=$(mktemp) top -o %CPU -b -n2 | tail -n +8 | head -n 1 > $TEMP #estrae i campi di interesse dalla linea messa nel file, in base alla posizione USER=$(cat $TEMP | awk '{print $2}') PID=$(cat $TEMP | awk '{print $1}') COMMAND=$(cat $TEMP | awk '{print $12}') #logga messaggio logger -p local1.info "$FREERAM, $USER $PID $COMMAND" #elimina file temporaneo rm -f $TEMP #attesa attiva in sleep crea problemi? sleep 10; } done