Odpowiedzi:
Kiedy usuwasz plik mail.log, rsyslog (na ubuntu) luźny uchwyt do pliku. Aby przywrócić działanie systemu Ubuntu, podaj:
sudo service rsyslog restart
Spowoduje to nie tylko utworzenie nowego pliku, ale także rozpoczęcie zapisywania dzienników.
Jest to błąd w syslog, ale ilustruje typowy problem, gdy usuwa się plik, gdy jest on otwarty przez program. Kiedy wykonujesz „rm”, usuwasz pozycję katalogu, ale NIE usuwasz pliku bazowego. System operacyjny przechowuje liczbę odwołań do pliku i tak naprawdę nie usunie bazowych danych pliku, dopóki liczba odniesień nie spadnie do zera. W przypadku pliku średniego liczba referencyjna nieotwartego pliku wynosi jeden (pozycja katalogu). Po otwarciu pliku liczba jest zwiększana do dwóch. Jeśli drugi program otworzy ten sam plik, liczba zostanie zwiększona do trzech. Jeśli pozycja katalogu zostanie teraz usunięta, liczba zostanie zmniejszona do dwóch - co oznacza, że plik jest nieprawidłowy (nie ma nazwy),
Po usunięciu / var / log / mail program rejestrujący nadal ma otwarty plik do zapisu. Jeśli utworzysz nowy / var / log / mail, wskaże on plik inny niż ten, który program rejestrujący obecnie zapisuje. Jedynym sposobem, aby wszystko było spójne, jest ponowne uruchomienie rejestratora systemu. Gdy oryginalny program rejestrujący zakończy pracę, wszystkie powiązane z nim pliki są zamykane - w tym anonimowy dziennik poczty, którego wpis katalogu został usunięty. Po zrestartowaniu rejestratora systemowego otworzy ponownie / var / log / mail, gdy będzie musiał napisać komunikat dziennika, i utrzyma go później otwarty.
Innym sposobem jest to często wykrywane, gdy działający program zapełnia cały dysk danymi pliku; użytkownik usuwa bardzo duży plik, ale miejsce na dysku nie jest zwalniane, ponieważ plik nadal istnieje i zajmuje miejsce na dysku, ale pozycja katalogu została usunięta. Kiedy program się zakończy (albo dlatego, że użytkownik go zabił, albo sam się zakończył), miejsce na dysku zostanie odzyskane, ponieważ liczba referencji w pliku spadnie do zera.
Program rejestrujący może zrobić, aby temu zapobiec, najpierw pisząc komunikat dziennika, sprawdź, czy pozycja katalogu pliku dziennika istnieje, a jeśli nie istnieje, zamknij oryginalny plik dziennika, otwórz nowy, a następnie przepisz wiadomość - aby wiadomość nie zginęła. Ale zrobienie tego wszystkiego wymagałoby znacznie większej złożoności, niż powinien mieć program rejestrujący system - dla każdego napisanego komunikatu zajmie to trochę więcej czasu ze względu na dodatkowe sprawdzanie katalogu - co się powiedzie za każdym razem, gdy plik ma NIE zostało usunięte.
Aby lepiej zrozumieć powyższe, poniższe polecenie jest pouczające, ponieważ opisuje wywołanie systemowe, które wykonuje usunięcie pozycji katalogu i zmniejszenie odniesienia: „man 3 unlink”
To nie jest problem w CentOS 7. Ktoś pomyślał, że dobrym pomysłem byłoby posiadanie dzienników poczty z postfiksami, aby przejrzeć dziennik. Jeśli chcesz zobaczyć dzienniki Postfiksa:
journalctl -u postfix
(aby zobaczyć cały dziennik)
journalctl -u postfix -f
(aby ogonić dziennik)
Możesz także potrzebować w main.cf do postfiksa
syslog_name = postfix
journalctl --vacuum-time=1d