Strony

Bash zadanie


Jakiś czas temu na prośbę kolegi rozwiązałem poniższe zadanie. Może się komuś przyda ten okropny dwulinijkowiec, tak na trójkę :)

Niepokojące zdarzenia naszego serwisu ABC logowane są w pliku tekstowym ABC.log; ponieważ plik rośnie dość szybko, to trzeba napisać
skrypt, który:

1. sprawdza, czy ABC.log > 1MB (lub >x Bajtów, gdzie x podajemy
wewnątrz skryptu)
2. jeśli tak, to:
- plik ABC.log ma być zamieniony na ABC.log.0
- były ABC.log.0 ma zostać spakowany i nazwany ABC.log.1.gz
- byłe ABC.log.n.gz mają być nazwane ABC.log.(n+1).gz (gdzie n=1,2,3....)

kderynski@e4310:~$FILESIZE=$(ls -l | grep "ABC.log$" | awk '{print$5}') && if [ $FILESIZE -gt 20 ];then if [ -f ABC.log ]; then mv ABC.log ABC.log.0; fi; if [ -f ABC.log.0 ]; then gzip ABC.log.0; fi; fi;

kderynski@e4310:~$for i in `ls -la | grep 'ABC.log.[1-9]*.gz' | awk '{print $9;}'`; do newfile=`echo $i | awk -F . '{ printf $1 "." $2 "." $3+1 "gz";}'`; mv "$i" "$newfile"; done

Brak komentarzy:

Prześlij komentarz