2010-07-24 20:12:11 +0000 2010-07-24 20:12:11 +0000
40
40

Czy istnieje jakiś dziennik, który rejestruje wyłączenia w Linuksie?

Zastanawiałem się czy w Linuksie istnieje plik dziennika, który rejestruje każde wyłączenie komputera?

Powodem dla którego pytam jest to, że przeprowadzam kilka testów dotyczących tego jak długo wytrzymuje bateria mojego laptopa w określonych warunkach. Mój laptop jest skonfigurowany tak, aby wyłączał się automatycznie, gdy pozostanie około 10 minut zasilania z baterii, więc jeśli istnieje gdzieś plik dziennika, który rejestruje, kiedy komputer jest wyłączany, to znacznie ułatwi to moje testy.

Pracuję na Ubuntu 10.04. Dzięki!

Odpowiedzi (8)

29
29
29
2010-07-29 09:30:27 +0000

A co z komendą last -x shutdown?

16
16
16
2010-07-24 21:43:43 +0000

Plik /var/log/messages naprawdę powinien mieć w sobie coś związanego z wyłączaniem, na przykład mój (CentOS 5) ma linie takie jak ta:

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 plik /etc/syslog.conf lub /etc/rsyslog.conf lub odpowiednik, aby upewnić się, że logi tam trafiają. Prawdopodobnie będziesz potrzebował uprawnień roota, aby odczytać pliki dziennika.

Również, podczas gdy nie są to wyłączenia per se, polecenie “last” powinno zgłaszać restarty.

Czy naprawdę nie ma nic w dziennikach w czasie ostatniego wyłączenia?

Do testów pamiętaj, że komputer wie, że pozostało mu 10 minut tylko dzięki informacjom przekazywanym przez baterię, które mogą, ale nie muszą być dokładne. Zamiast czekać na wyłączenie, możesz spojrzeć bezpośrednio na informacje ACPI. Na moim laptopie jest to tutaj:

/proc/acpi/battery/BAT0/

Tam ciekawie wyglądają pliki “state” i “info”. Mógłbyś obserwować pozostałą pojemność w pliku stanu podczas pracy laptopa w różnych warunkach, aby zobaczyć jak szybko spada.

5
5
5
2015-03-26 14:50:50 +0000

Po pierwsze, pozwólcie mi zacząć od tego, że wiem, iż jest to starszy wątek. Komentuję to tylko po to, aby inni, którzy znajdą to podczas grzebania w sieci (tak jak ja dzisiaj), mieli jasną odpowiedź.

Po drugie, proszę zauważyć, że poniższe polecenie jest złą praktyką i należy do kategorii “bezużytecznych zastosowań kota” (szukaj w google)…

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

Ta linia powinna zostać zmieniona na:

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

grep, i większość poleceń unix/linux (sed, awk, etc…) nie wymaga cat do odczytania zawartości pliku. Wystarczy umieścić ścieżkę i nazwę pliku po poleceniu, aby przekazać je jako argument. Dodawanie potoku i kolejnej zewnętrznej komendy (cat) to tylko marnowanie czasu i zasobów.

Na koniec, jeśli chodzi o to, gdzie znaleźć zapisy wyłączeń i/lub restartów systemu, użyj ostatniej komendy, ponieważ właśnie do tego jest ona przeznaczona. Odczytuje ono plik dziennika /var/log/wtmp w poszukiwaniu wszystkich wpisów dotyczących logowania/wylogowania. Ponieważ wyłączenia i restarty są w rzeczywistości zdarzeniami logowania/wylogowania na poziomie systemu, są one tutaj rejestrowane. To samo dotyczy zamykania konsoli root, jest to zdarzenie logowania/wylogowania.

Przykład:

last -5 reboot shutdown root

Spowoduje to wyświetlenie 5 ostatnich wpisów dotyczących restartu, wyłączenia i root'a (w tym wyłączenia 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 :-)

4
4
4
2010-07-24 20:16:46 +0000

Plik /var/log/messages powinien zawierać następujące informacje

2
2
2
2010-07-25 01:22:07 +0000

jeśli chcesz śledzić, jak długo twój komputer był włączony w przeszłości, możesz użyć czegoś takiego jak uptimed.

jest on dostarczany z programem o nazwie uprecords, który pokazuje jak długo twój komputer był włączony.

1
1
1
2017-01-19 18:02:30 +0000

last reboot działało dla mnie na CentOS 6.7.

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

last -F reboot

Chociaż wnioskuję, że przełącznik -F nie działa na niektórych systemach, takich jak Solaris. Najwyraźniej jest to część ostatniego GNU, chociaż.

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

1
1
1
2014-05-07 13:52:00 +0000

Oto one-liner do wypisania wszystkich wiadomości z bieżącego dnia:

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

To było testowane na CentOS, więc YMMV.

I oczywiście jest jeszcze last reboot i last shutdown (jak wspomniano), ale to jest zbyt proste dla moich potrzeb (podaje tylko daty).

0
0
0
2010-07-24 21:15:36 +0000

jeśli nie ma logu, możesz spróbować dodać ‘date >mylog’ do skryptu zamykającego (w niektórych systemach nazywa się to rc.shutdown)

lub, jest też sposób bez wcześniejszego przygotowania. uruchom:

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

i tail mylog na następnej sesji.