Czy ktoś miał jakieś problemy z Logrotate, które spowodowały obrót pliku dziennika, a następnie powrót do tego samego rozmiaru, w jakim był pierwotnie? Oto moje ustalenia:
Skrypt Logrotate:
/var/log/mylogfile.log { obróć 7 codziennie Kompresja olddir / log_archives missingok notifempty copytruncate }
Pełne wyjście z Logrotate:
kopiowanie /var/log/mylogfile.log do /log_archives/mylogfile.log.1 obcinanie /var/log/mylogfile.log kompresowanie dziennika za pomocą: / bin / gzip usuwanie starego dziennika /log_archives/mylogfile.log.8.gz
Plik dziennika po obcięciu
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 część 1 część 1 0 11 stycznia 17:32 /var/log/mylogfile.log
Dosłownie kilka sekund później:
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 part1 part1 3.5G 11 stycznia 17:32 /var/log/mylogfile.log
Wersja RHEL:
[root @ server ~] # cat / etc / redhat-release Red Hat Enterprise Linux ES wydanie 4 (Nahant Update 4)
Wersja Logrotate:
[root @ DAA21529WWW370 ~] # rpm -qa | grep logrotate logrotate-3.7.1-10.RHEL4
Kilka uwag:
- Usługi nie można ponownie uruchomić w locie, dlatego używam copytruncate
- Dzienniki obracają się każdej nocy, zgodnie z
olddir
katalogiem, w którym znajdują się pliki dzienników z każdej nocy.
Jestem bardzo pewien, że Kjetil go trafił. Drew, może jeszcze nie przekonuje cię jego wyjaśnienie, ale zachęcam do uważnego przeczytania tego, co powiedział.
Jeśli ją zaakceptujesz, rozwiązaniem może być zatrzymanie i ponowne uruchomienie aplikacji po obróceniu dzienników lub użycie narzędzia takiego jak „rotatelogi” Apache, w którym dane wyjściowe dziennika są podawane do narzędzia za pomocą rury, a narzędzie zajmuje się co jakiś czas obracając plik dziennika. Na przykład jeden z moich dzienników instancji apache z
co powoduje wiele plików dziennika o nazwach takich jak
pojawiać się bez restartowania apache; Następnie mogę skompresować je ręcznie po fakcie. Zwróć uwagę, w jaki sposób rotacja odbywa się co tydzień, czyli co 604800 sekund, do którego przekazywany jest argument
rotatelogs
.Jeśli nie możesz zatrzymać i zrestartować aplikacji i nie można zalogować się za pomocą potoku, to myślę, że masz prawdziwy problem. Być może inni będą mieli sugestie.
źródło
byłoby naprawdę wspaniale, gdybyś mógł wysłać cały logrotate.
Po co próbować używać kill -HUP? Metoda (klasyczne ponowne ładowanie nie restartuje się ).
Również ... sprawdź,
lsof
kto ma dostęp do pliku.źródło
kill -HUP
ponieważ tej aplikacji nie można w żaden sposób dotknąć - jest to wrażliwa aplikacja, której nie posiadam (nawet jej nie zarządzam - zarządzam tylko stroną systemu operacyjnego), więc muszę mieć możliwość przeprowadzania logrotacji tego droga./etc/cron.daily
zainicjowaniu zaplanowanego programu logrotate . Pytanie do wszystkich: Czy jest coś, co skrypt logrotate robi inaczej niż ręczne uruchamianie logrotate? Mój skrypt logrotate wygląda dosłownie/usr/sbin/logrotate /etc/logrotate.conf
. To dość zaskakujące.Wystarczy użyć „>>”, co oznacza dopisanie zamiast „>”, co oznacza tworzenie ze skryptów zapisujących w tym pliku. Miałem dokładnie ten sam problem i naprawiłem go za pomocą append w moim skrypcie.
SomeScript.sh >> output.txt
Nadzieja, która jest wyraźniejsza.
źródło
>
skryptu. Co więcej, ta odpowiedź jest myląca, ponieważ istnieje duża różnica między skryptami>
i pomiędzy nimi>(
)
. Na koniec, jeśli kod piszący zostanie zaktualizowany, byłoby znacznie lepiej, gdyby po prostu zaczął pisać do nowego pliku dziennika pologrotate
wykonaniu tej czynności.