Skocz do zawartości
Zaloguj się, aby obserwować  
kori

codzienna zmiana nazwy logu

Polecane posty

serwer tworzy mi jeden ogromny log

chciałbym codziennie np. o 3 w nocy

- zmienić nazwę access.log na datę: 2012-04-26.log

- pierwszego każdego miesiąca kompresja logów

i usunięcie jeżeli prawidłowo skompresowało

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Musisz zainstalować logrotate.

 

Poniżej wycinek mojego /etc/logrotate.conf, który naprowadzi Cię na rozwiązanie Twojego problemu wink.png

 

# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
dateext
# uncomment this if you want your log files compressed
compress

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

kiepskie to, nie o to mi chodzi

na razie mam już dwie linie ;p

 

#!/bin/bash

mv access.log `date +"%Y-%m-%d".log`

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Kori, zebys sie przypadkiem nie zdziwil, gdziez to sie beda te logi zapisywac ;).

Jesli chcesz robic to w ten sposob, to powinienes wyslac sygnal do aplikacji, zeby sie "przeladowala"

Bo w linuksowych systemach plikow, gdzie operujesz tak naprawde na inodach i wskaznikach do nich, to gdy aplikacja bedzie miala uchwyt to pliku, to bedzie do niego pisac... A to, ze zmienisz nazwe... to zaktualizujesz tylko tak naprawde metadane, a nie przeniesiesz inode w inne miejsce. Wiec efekt bedzie taki, ze bedziesz sie zastanawiac... czemu ten apache (czy tam inne ustrojstwo) wypelnia stary plik, a nowy lezy pusty.

 

Jak sobie z tym poradzic... Dla wiekszosci porzadnie napisanych aplikacji wyslanie sygnalu HUP (kill -HUP proces_id) spowoduje, ze uzywane pliki zostana zamkniete i ponownie otworzone - juz te wlasciwe.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

#!/bin/bash

d1=`date +%Y_%m_`

d2="$((`date +%d`-1))"

mv /var/log/ziproxy/access.log /var/log/ziproxy/$d1$d2.log

kill -HUP `cat /var/run/squid.pid`

 

 

 

0 4 * * * root /var/log/ziproxy/logrotate

 

 

no to jutro się przekonam czy się wykonało ;)

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

proxy rano nie działało

 

możliwe że to wina: kill -HUP `cat /var/run/squid.pid`

zamiast: kill -HUP `cat /var/run/ziproxy.pid`

 

jednak mówiłeś że bez tego kill będzie zapisywać do starego

no cóż zobaczymy następnego dnia

 

no i teraz pozostaje jeszcze comiesięczna kompresja

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Się czepiacie, dajcie chłopakowi powynajdywać koło. Przy okazji się czegoś o Linuchu nauczy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

na tę chwilę wygląda to jak niżej

utknąłem na kasowaniu po archiwizacji

tylko pierwszego dnia miesiąca

aktualnie będzie usuwać codziennie

 

 

#!/bin/bash

d=`date +%d`

d1=`date +%Y_%m`

d2="$((`date +%d`-1))"

 

if (($d== "1" ))

then

echo "kompresja"

7za a -mx9 $d1 $d1*.log

fi

 

if [ "$?" = "0" ] then

rm $ds*.log

fi

 

mv /var/log/ziproxy/access.log /var/log/ziproxy/$d1_$d2.log

kill -HUP `cat /var/run/ziproxy.pid`

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

czyli wyszłoby tak:

#!/bin/bash

d=`date +%d`

d1=`date +%Y_%m`

d2="$((`date +%d`-1))"

 

if (($d== "1" ))

then

7za a -mx9 $d1 $d1*.log && rm $d*.log

fi

 

mv /var/log/ziproxy/access.log /var/log/ziproxy/$d1_$d2.log

kill -HUP `cat /var/run/ziproxy.pid`

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

wersja finalna, uwagi mile widziane

 

#!/bin/bash

 

year=`date +%Y`

month=`date +%m`

month2="$((`date +%m`-1))"

day=`date +%d`

day2="$((`date +%d`-1))"

 

 

if ((${#month2}<2))

then

month2="0${month2}"

fi

 

if ((${#day2}<2))

then

day2="0${day2}"

fi

 

dir="/var/log/ziproxy"

lastmonth=${dir}/${year}_${month2}

last=${dir}/access.log

lastday=${dir}/${year}_${month}_${day2}.log

 

if (($day== "01" ))

then

7za a -mx9 ${lastmonth} ${lastmonth}*.log && rm ${lastmonth}*.log

fi

 

mv ${last} ${lastday}

/etc/init.d/ziproxy restart

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

w sumie wyszło że nie jest to tak bardzo skomplikowane

mała anomalia wyszła, bo robiły się pliki *.1.log co 2 dni

 

 

mv ${last} ${lastday}

/etc/init.d/ziproxy restart

 

zamieniłem na:

 

/etc/init.d/ziproxy stop

mv ${last} ${lastday}

/etc/init.d/ziproxy start

 

 

serwer proxy przestawał działać po sugerowanej przez logrotate:

kill -HUP `cat /var/run/ziproxy.pid`

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

poprawiona wersja

 

#!/bin/bash

 

lastmonth=/var/log/ziproxy/"$((`date +%Y%m` -1))"*.log

lastmontha=/var/log/ziproxy/arch/"$((`date +%Y%m` -1))"

lastday=/var/log/ziproxy/"$((`date +%Y%m%d` -1))".log

last=/var/log/ziproxy/access.log

 

if ((`date +%d`=="01"))

then

7za a -mx9 ${lastmontha} ${lastmonth} && rm ${lastmonth}

fi

 

/etc/init.d/ziproxy stop

mv ${last} ${lastday}

/etc/init.d/ziproxy start

 

 

logrotate mógłby być, gdyby nie te bezsensowne nazwy

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×