[Linux-Biella] Cron log

Jumping Jack jumpingjack a jumpingjack.org
Dom 21 Ago 2016 21:55:43 CEST



On 21/08/2016 10:30, vallini.daniele a bilug.it wrote:
> Sat, Aug 20, 2016 at 09:33:22PM +0200  Jumping Jack ha scritto:
>
>>> da quale processo proviene l'output?
>> quello che vorrei adesso da vari... echo, date, xfs_fsr, xfs_db
>> altrimenti semplicemente dallo script
> echo, date, xfs_fsr, xfs_db non mi paiono processi, danno un output
> all'esecuzione e fine (xfs pero' lo conosco poco)
>
> Non vedo quindi senso a monitorare in tempo reale, piuttosto ripeti
> periodicamente il comando e leggi il relativo output tipo:
>
> date > file_output; xterm -e less file_output
Ho completato lo script concatenando al contrario, ovvero con la 
variabile prima.
Lo script originale faceva una cosa buona ma non troppo.
xfs_fsr senza parametri cerca di deframmentare il 10% tra i file più 
frammentati di tutte le partizioni. Si può impostare un limite di tempo 
di esecuzione. Alla fine va bene senza saper ne leggere ne scrivere, ma 
fa schifo di base.
Così ho preso una idea e l'ho elaborata un po', ora tiene frammentazione 
bassa e con le modifiche del log posso anche migliorarala.
Potrebbero esserci errori non ho potuto verificare tutte le condizioni 
ovviamente.

"
redirect_cmd () {
     if [ -f /root/chkxfsfrag.log.on ]
     then
         $@ >> /var/log/chkxfsfrag.log 2>&1
     else
         $@
         if [ -f /var/log/chkxfsfrag.log ]
         then
             rm /var/log/chkxfsfrag.log
         fi
     fi
}


e='/bin/echo -e'                                # Use the echo command, 
not built-in.
xfsfsr=/usr/sbin/xfs_fsr                            # Set variable with 
the path to xfs_fsr.
xfsdb=/usr/sbin/xfs_db                              # Set variable with 
the path to xfs_db.
pctmax=5                                        # Set maxiumum frag 
percent needed for defrag.
pctmax2=20
maxiterations=10

redirect_cmd $e "Start"
redirect_cmd date

array=`df -T|grep xfs|cut -f 1 --delim=" "`     # Array of all XFS file 
systems.
for i in ${array[@]};
do
         percentage=`$xfsdb -c frag -r ${i}|cut -f 7 --delim=" "`
         percent2=`$e $percentage|cut -f 1 --delim=.`
         if [ "$percent2" -gt "$pctmax" ]
         then
                 redirect_cmd $e "${i} is $percentage fragmented. 
Running defragment on ${i}."
                 redirect_cmd $xfsfsr ${i}
                 percentage=`$xfsdb -c frag -r ${i}|cut -f 7 --delim=" "`
                 percent2=`$e $percentage|cut -f 1 --delim=.`
                 redirect_cmd $e "${i} is $percentage fragmented after 
execution."
                 redirect_cmd date
                 count=2
                 while [ "$percent2" -gt "$pctmax2" ]
                 do
                     redirect_cmd $e "Running defragmentation #${count} 
on ${i}."
                     redirect_cmd $xfsfsr ${i}
                     percentage=`$xfsdb -c frag -r ${i}|cut -f 7 
--delim=" "`
                     percent2=`$e $percentage|cut -f 1 --delim=.`
                     redirect_cmd $e "${i} is $percentage fragmented 
after ${count} executions."
                     redirect_cmd date
                     let count+=1
                     if [ "$count" -gt "$maxiterations" ]
                     then
                         break
                     fi
                 done
                 if [ "$percent2" -gt "$pctmax" ]
                 then
                     redirect_cmd $e "Running final defragmentation on 
${i}."
                     redirect_cmd $xfsfsr ${i}
                     percentage=`$xfsdb -c frag -r ${i}|cut -f 7 
--delim=" "`
                     redirect_cmd $e "${i} is $percentage fragmented 
after ${count} executions."
                     redirect_cmd date
                 fi
         else
                 redirect_cmd $e "${i}\t$percentage is not above 
fragmentation threshold of $pctmax."
         fi
done
exit 0
"

PS: xfs come btrfs devono essere frammentati, ma si può fare online e 
sono di gran lunga più funzionali dei vari ext. Poi ho provato anche 
altro (non per poco, per mesi) ma non ricordo. Un test era non lasciare 
il server sotto ups, qui ogni tanto salta la corrente,   e se succedeva 
qualcosa FS=cacca. :)


Maggiori informazioni sulla lista Linux