dlaczego powinniśmy używać funkcji create i copytruncate razem?

40

Geek Stuff ma przykład na ten temat logrotate. copytruncateskopiuje i obcina oryginalny plik dziennika.

Dlaczego więc powinniśmy skorzystać create? Oryginalny plik dziennika nie został usunięty.

/tmp/output.log {
  size 1k
  copytruncate
  create
  compress
  compresscmd /bin/bzip2
  compressext .bz2
  rotate 4
  maxage 100
}

Kolejne pytanie brzmi: do czego służy maxage 100? rotate 4Dyrektywa usunie stare pliki dziennika po 4 obrotu.

Majid Azimi
źródło
4
Tak, to nie ma sensu, a man logrotatenawet mówi tak: „ copytruncate : [...] Gdy ta opcja jest używana, opcja tworzenia nie przyniesie żadnego efektu, ponieważ stary plik dziennika pozostaje na swoim miejscu”.
Ulrich Schwarz
1
maxage 100usunie obrócone pliki, gdy osiągną wiek ponad 100 dni, a bieżący plik zostanie obrócony; nawet jeśli 4istnieje mniej niż pliki obrócone.
Lutz Prechelt,

Odpowiedzi:

57

Jest to prawdopodobnie błąd, który można znaleźć tylko w jednym przykładzie tego samouczka. Wszystkie inne przykłady mają copytruncatebez createopcji. Również logrotate strona podręcznika stwierdza, że zostanie zignorowana :

copytruncate

Obetnij oryginalny plik dziennika do zera po utworzeniu kopii, zamiast przenosić stary plik dziennika i opcjonalnie utworzyć nowy. Można go użyć, gdy nie można nakazać programowi, aby zamknął swój plik dziennika, a zatem może kontynuować zapisywanie (dołączanie) do poprzedniego pliku dziennika na zawsze. Zauważ, że pomiędzy kopiowaniem pliku a obcięciem jest bardzo krótki przedział czasu, więc niektóre dane rejestrowania mogą zostać utracone. Gdy ta opcja jest używana, opcja tworzenia nie przyniesie żadnego efektu, ponieważ stary plik dziennika pozostaje na swoim miejscu.


Jeśli chodzi o maxage, myślę, że może być przydatny na przykład dla plików dziennika, które mogą być puste przez kilka okresów rotacji (dni / tygodnie / miesiące) - jeśli użyjesz notifempty, pusty plik dziennika nie zostanie obrócony, więc możesz mieć zbyt stare obrócone pliki na miejscu .

Marki555
źródło