kori 29 Zgłoś post Napisano Kwiecień 26, 2012 (edytowany) 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 Kwiecień 26, 2012 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Mateusz Sojda 41 Zgłoś post Napisano Kwiecień 26, 2012 Musisz zainstalować logrotate. Poniżej wycinek mojego /etc/logrotate.conf, który naprowadzi Cię na rozwiązanie Twojego problemu # 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
kori 29 Zgłoś post Napisano Kwiecień 26, 2012 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
kafi 2425 Zgłoś post Napisano Kwiecień 26, 2012 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
kori 29 Zgłoś post Napisano Kwiecień 26, 2012 (edytowany) #!/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 Kwiecień 26, 2012 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kori 29 Zgłoś post Napisano Kwiecień 27, 2012 (edytowany) 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 Kwiecień 27, 2012 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Jarosław Szmańda 42 Zgłoś post Napisano Kwiecień 27, 2012 Po co zabierasz się od du** strony skoro jest logrotate jak już Mateusz wspomniał? Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Kwiecień 27, 2012 Przecież określił że "kiepskie" Udostępnij ten post Link to postu Udostępnij na innych stronach
d.v 1409 Zgłoś post Napisano Kwiecień 27, 2012 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
kori 29 Zgłoś post Napisano Kwiecień 27, 2012 (edytowany) 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 Kwiecień 27, 2012 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Zgłoś post Napisano Kwiecień 27, 2012 (edytowany) Edytowano Marzec 26, 2018 przez Gość (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kori 29 Zgłoś post Napisano Kwiecień 27, 2012 (edytowany) 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 Kwiecień 27, 2012 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kori 29 Zgłoś post Napisano Kwiecień 27, 2012 (edytowany) 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 Kwiecień 27, 2012 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Kwiecień 28, 2012 Fajnie, ze skrypt działa, ale cały czas można to zrobić logrotate kilkoma bardzo prostymi liniami. Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Kwiecień 28, 2012 + podejrzewam, że logrotate ma jakąś obsługę wyjątków. Udostępnij ten post Link to postu Udostępnij na innych stronach
kori 29 Zgłoś post Napisano Maj 1, 2012 (edytowany) 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 Maj 1, 2012 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kori 29 Zgłoś post Napisano Maj 4, 2012 (edytowany) 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 Maj 4, 2012 przez kori (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach