Czy istnieje dziennik rejestrujący wyłączenia w systemie Linux?

38

Zastanawiałem się, czy w systemie Linux jest plik dziennika, który rejestruje się przy każdym wyłączeniu komputera?

Powodem, dla którego pytam, jest to, że przeprowadzam testy dotyczące czasu pracy baterii laptopa w określonych warunkach. Mój laptop jest skonfigurowany tak, aby automatycznie się wyłączał, gdy pozostało około 10 minut energii akumulatora, więc jeśli gdzieś jest plik dziennika, który zapisuje, kiedy komputer jest wyłączony, to znacznie ułatwi mi testowanie.

Używam Ubuntu 10.04. Dzięki!

Michał
źródło

Odpowiedzi:

15

/var/log/messagesPlik naprawdę powinien mieć coś odnoszącego się do wyłączeń w nim, na przykład kopalni (CentOS 5) posiada linie takie jak poniżej:

Jul 18 23:00:13 nero shutdown[2649]: shutting down for system halt
...
Jul 18 23:00:27 nero kernel: Kernel logging (proc) stopped.
Jul 18 23:00:27 nero kernel: Kernel log daemon terminating.

Sprawdź swój /etc/syslog.conflub /etc/rsyslog.confrównoważny, aby upewnić się, że logi tam będą. Prawdopodobnie będziesz potrzebować uprawnień roota, aby odczytać pliki dziennika.

Ponadto, mimo że same w sobie nie są zamykane, polecenie „ostatnie” powinno zgłaszać ponowne uruchomienie.

Czy naprawdę w ogóle nie ma nic w dziennikach po ostatnim zamknięciu?

Podczas testowania pamiętaj, że komputer wie, że zostało mu tylko 10 minut, ponieważ informacje, które zgłasza bateria, mogą być lub nie być dokładne. Zamiast czekać na zamknięcie, możesz spojrzeć bezpośrednio na informacje ACPI. Na moim laptopie jest tutaj:

/proc/acpi/battery/BAT0/

Tam pliki „stanowe” i „informacyjne” wyglądają interesująco. Możesz obserwować pozostałą pojemność w pliku stanu podczas pracy laptopa w różnych warunkach, aby zobaczyć, jak szybko spada.

Inne
źródło
3
O ile go nie przegapię, nie widzę żadnego rodzaju komunikatu „zamykanie” w / var / log / messages. Czasami pojawia się komunikat „Rejestrowanie jądra (proc) zatrzymane”), ale nie zawsze. Jednak uruchamianie last -xdziała. To polecenie wyświetla następujący wiersz: shutdown system down 2.6.32-23-generi Sun Jul 25 09:12 - 19:00 (-14815+-13: Dziękuję za wskazówkę dotyczącą baterii. Mój system też to ma, więc będę musiał to sprawdzić! Wygląda na to, że aktualizuje te pliki co około 5 sekund. Dzięki!
Michael
Dzięki jeszcze raz. Moje wyniki są tutaj: mangstacular.blogspot.com/2010/07/...
Michael
28

Co powiesz na dowodzenie last -x shutdown?

Janne Pikkarainen
źródło
5

Najpierw zacznę od stwierdzenia, że ​​wiem, że to starszy wątek. Komentuję tylko po to, aby inni, którzy znajdą to podczas przeglądania sieci (tak jak dzisiaj), otrzymają jasną odpowiedź.

Po drugie, pamiętaj, że poniższe polecenie jest złym postępowaniem i należy do kategorii „bezużyteczne wykorzystanie kota” (wyszukiwanie go w Google) ...

cat /var/log/messages | grep "`LC_ALL=en_en.utf8 date +"%b %e"`"

Ten wiersz należy zmienić na:

grep "`LC_ALL=en_en.utf8 date +"%b %e"`" /var/log/messages

grep i większość poleceń unix / linux (sed, awk itp.) nie wymagają od kota czytania zawartości plików. Wystarczy umieścić ścieżkę i nazwę pliku po poleceniu, aby przekazać go jako argument. Dodanie potoku i innego zewnętrznego polecenia (cat) to tylko zmarnowany czas i zasoby.

Wreszcie, aby dowiedzieć się, gdzie znaleźć zapis wyłączeń systemu i / lub restartów, użyj ostatniego polecenia, ponieważ jest to dokładnie to, do czego jest przeznaczony. Odczytuje plik dziennika / var / log / wtmp dla wszystkich pozycji logowania / wylogowania. Ponieważ zamknięcia i ponowne uruchomienie są w rzeczywistości zdarzeniem logowania / wylogowania na poziomie systemu, są tutaj rejestrowane. To samo dotyczy wyłączenia konsoli głównej, jest to zdarzenie wylogowania.

Przykład:

last -5 reboot shutdown root

To da ci 5 ostatnich wpisów restartu, zamknięcia i roota (włącznie z zamknięciem konsoli) w dzienniku wtmp.

Wynik:

reboot    ~                         Mon Mar 23 14:51
shutdown  ~                         Mon Mar 23 14:49
root      console                   Mon Mar 23 14:49 - shutdown  (00:00)
reboot    ~                         Mon Mar 16 09:54
shutdown  ~                         Thu Mar 12 17:41

Mam nadzieję, że to pomoże każdemu, kto natknie się na ten wątek. :-)

David Dreggors
źródło
Alternatywnie po prostu last -xlub last -F -R -x runlevel. Do celów monitorowania baterii w systemie Ubuntu grep hooks /var/log/pm-suspend.logprzydatne może być również pokazanie zawieszenia i wznowienia. Niestety, pm-powersave.log nie przechowuje czasów podłączenia zasilania AC (chyba że dodasz własny hak). help.ubuntu.com/community/PowerManagement/ReducedPower może być warte przeczytania.
Cedric Knight
Jeśli chodzi o UUoC, $ czas procesora << $ czas mózgu ...
MikeP
1
Każda osoba wspominająca o „bezużytecznych zastosowaniach kota” prawdopodobnie poświęca więcej czasu na wskazanie tego faktu, niż całkowity czas pracy procesora spędzony na bezużytecznych zastosowaniach kota przez wszystkie komputery na ziemi (a czasami niepotrzebnie wzdychają swoją skądinąd miłą odpowiedzią jako efekt uboczny - - jak ten)
ndemou
4

Plik / var / log / messages powinien zawierać te informacje

ennuikiller
źródło
W tym pliku nie widziałem nic związanego z zamykaniem. :( Próbowałem grepować wszystkie inne pliki w tym katalogu, korzystając ze znacznika czasu, w którym zamknąłem komputer, ale bez powodzenia:grep -r "Jul 24 14:" /var/log/*
Michael
Plik nie istnieje w linux mint mate 17.
Eric Wang
2

jeśli chcesz śledzić, jak długo twój komputer działał w przeszłości, możesz użyć czegoś takiego jak aktualizacja.

jest wyposażony w program o nazwie uprecords, który pokazuje, jak długo komputer był włączony.

użytkownik43856
źródło
1

Oto linijka z listą wszystkich wiadomości z bieżącego dnia:

cat /var/log/messages | grep "`LC_ALL=en_en.utf8 date +"%b %e"`"

Zostało to przetestowane na CentOS, więc YMMV.

I oczywiście jest last rebooti last shutdown(jak wspomniano), ale jest to zbyt proste jak na moje potrzeby (podaje tylko daty).

Nux
źródło
1

last reboot pracował dla mnie na CentOS 6.7.

Aby pokazać rok w danych wyjściowych, więc ma sens, jeśli masz więcej niż jeden rok rekordów, zrób to

last -F reboot

Chociaż rozumiem, że przełącznik -F nie działa na niektórych systemach, takich jak Solaris. Jednak najwyraźniej jest to część ostatnich GNU.

Dzięki https://unix.stackexchange.com/a/97597/174520

Aaron Wallentine
źródło
0

jeśli nie ma dziennika, możesz spróbować dodać trochę „date >> mylog” do skryptu zamykania (w niektórych dystrybucjach nazywa się to rc.shutdown)

lub istnieje również sposób bez potrzeby previlage. biegać:

while [ 1 ];do sleep 5;date>mylog;sync;done

i ogon mylog na następnej sesji.

Jokester
źródło