( To pytanie dotyczy podobnego problemu, ale mówi o obróconym pliku dziennika).
Dzisiaj dostałem komunikat systemowy dotyczący bardzo małej /var
przestrzeni.
Jak zwykle wykonałem polecenia w linii, sudo apt-get clean
która tylko nieznacznie poprawiła scenariusz. Następnie usunąłem obrócone pliki dziennika, co ponownie zapewniło bardzo niewielką poprawę.
Po zbadaniu stwierdzam, że niektóre pliki dziennika /var/log
urosły do bardzo dużych. Mówiąc konkretnie, ls -lSh /var/log
daje
total 28G -rw-r----- 1 syslog adm 14G Aug 23 21:56 kern.log -rw-r----- 1 syslog adm 14G Aug 23 21:56 syslog -rw-rw-r-- 1 root utmp 390K Aug 23 21:47 wtmp -rw-r--r-- 1 root root 287K Aug 23 21:42 dpkg.log -rw-rw-r-- 1 root utmp 287K Aug 23 20:43 lastlog
Jak widzimy, pierwsze dwa to obrażające. Jestem lekko zaskoczony, dlaczego tak duże pliki nie zostały obrócone.
Więc co powinienem zrobić? Po prostu usuń te pliki, a następnie uruchom ponownie? A może pójść po bardziej rozważne kroki?
Używam Ubuntu 14.04.
AKTUALIZACJA 1
Na początek system ma zaledwie kilka miesięcy. Musiałem zainstalować system od zera kilka miesięcy temu po awarii dysku twardego.
Teraz, jak wskazano w tej odpowiedzi , najpierw sprawdziłem za pomocą szkodliwych plików dziennika tail
, nie ma w tym nic dziwnego. Następnie, dla głębszej kontroli, wykonałem ten skrypt z tej samej odpowiedzi .
for log in /var/log/{syslog,kern.log}; do
echo "${log} :"
sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
| sort | uniq -c | sort -hr | head -10
done
Proces ten zajął kilka godzin. Dane wyjściowe były w linii,
/var/log/syslog : 71209229 Rafid-Hamiz-Dell kernel: sda3: rw=1, want=7638104968240336200, limit=1681522688 53929977 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 17280298 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 1639 Rafid-Hamiz-Dell kernel: EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 54763121030042024) <snipped> /var/log/kern.log.1 : 71210257 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 71209212 Rafid-Hamiz-Dell kernel: sda3: rw=1, want=7638104968240336200, limit=1681522688 1639 Rafid-Hamiz-Dell kernel: EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 954763121030042024)
( /dev/sda3
to mój katalog domowy. Jak możemy znaleźć,
lsblk /dev/sda NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 122.1G 0 part / ├─sda2 8:2 0 7.6G 0 part [SWAP] └─sda3 8:3 0 801.8G 0 part /home
Dlaczego proces będzie chciał pisać poza limitem, tak naprawdę nie mieści się w moim rozumieniu. Być może będę chciał zadać inne pytanie na tym forum, jeśli będzie to trwało nawet po aktualizacji systemu).
Następnie z tej odpowiedzi (może chcesz sprawdzić to do głębszego zrozumienia), I wykonany,
sudo su -
> kern.log
> syslog
Teraz te pliki mają zero rozmiarów. System działa dobrze przed ponownym uruchomieniem i po nim.
Będę oglądać te pliki (wraz z innymi) w ciągu kilku najbliższych dni i zgłaszam się, jeśli
zachowują się poza linią.
Na koniec, oba obraźliwe pliki ( kern.log
i syslog
), są ustawione do obrócenia, ponieważ inspekcja plików ( grep
pomogła) w
/etc/logrotate.d/
pokazach.
AKTUALIZACJA 2
Pliki dziennika są faktycznie obracane. Wygląda na to, że duże rozmiary zostały osiągnięte jednego dnia.
źródło
Odpowiedzi:
Nie. Opróżnij je, ale nie używaj,
rm
ponieważ może to spowodować awarię podczas wpisywaniatouch
polecenia, aby je odtworzyć.Najkrótsza metoda:
Jeśli nie root, będzie to wymagać
sudo
. Zaczerpnięte z innej odpowiedzi na temat AU.ZANIM TO zrobisz. Zrób
tail {logfile}
i sprawdź, czy istnieje powód, dla którego są tak duże. Jeśli ten system nie ma kilku lat, nie powinno być tego powodu, a naprawienie problemu jest lepsze niż pozwolenie na to.Zarówno kern.log, jak i syslog zwykle nie powinny być tak duże. Ale tak jak powiedziałem: jeśli ten system działa przez lata, może to być normalne, a pliki muszą zostać wyczyszczone.
I aby w przyszłości nie stało się to tak duże: konfiguracja
logrotate
. Jest to dość proste i kompresuje plik dziennika, gdy staje się większy niż rozmiar, który ustawiłeś.Jeszcze jedno: jeśli nie chcesz usuwać zawartości, możesz skompresować pliki, tarując je lub gzipując. To sprawi, że skończysz z plikami prawdopodobnie 10% tego, czym są teraz. To znaczy, jeśli na dysku jest jeszcze miejsce na zrobienie tego.
źródło
wtmp: Command not found
Która to paczka?>
to szybkie i wypróbowałem „lastlog” i zadziałało, więc założyłem, że zrozumiałem poprawnie: PPrawdopodobnie warto spróbować ustalić, co wypełnia dzienniki - po prostu sprawdzając je wizualnie za pomocą polecenia
less
lubtail
lub jeśli obrażające linie są zbyt głęboko zakopane, aby łatwo zobaczyć, co się dzieje, coś w tym rodzaju
(uwaga: może to zająć trochę czasu, biorąc pod uwagę tak duże pliki), który spróbuje usunąć znaczniki czasu, a następnie policzy najczęściej występujące wiadomości.
źródło
Moja metoda czyszczenia plików dziennika systemu jest następująca. Kroki 1 i 2 są opcjonalne, ale czasami trzeba sprawdzić starsze dzienniki, a czasem przydatne jest tworzenie kopii zapasowych. ;-)
Opcjonalnie: Skopiuj plik dziennika
Opcjonalnie: użyj Gzip na kopii dziennika
Użyj / dev / null dla czystego pliku
I używamy do tego dzienników (tylko na kilku serwerach) logrotate i cotygodniowo uruchamiamy za pomocą skryptu cron, który kompresuje wszystkie pliki z * .1 (lub następną rotacją) przez gzip.
źródło
Zainstalowałem dzisiaj Ubuntu 16.04 i zauważyłem ten sam problem. Naprawiłem to jednak za pomocą busybox-syslogd. Tak! Właśnie zainstalowałem ten pakiet i problem został rozwiązany. :)
Po zainstalowaniu tego pakietu zresetuj
syslog
ikern.log
:Mam nadzieję, że to proste rozwiązanie przyda się innym ludziom.
źródło