Jak znaleźć czas przestoju od ostatniego budzenia ze stanu gotowości


29

Chcę poznać czas działania od ostatniego budzenia ze stanu gotowości.

Polecenie uptimepokazuje tylko różnicę między bieżącym czasem minus ostatni czas uruchomienia.

Odpowiedzi:


30

W /var/log/pm-suspend.logposzukaj ostatniej linii wyglądającej tak:

Sun Dec 16 09:30:31 CET 2012: Awake.

To twój ostatni czas budzenia. Możesz obliczyć swój czas pracy od tego czasu, tak jak sugerował Paul.

Okresowo logrotatebędziesz „obracać” logi, aby zapobiec ich zbyt dużemu powiększeniu, więc możesz znaleźć pusty pm-suspend.logplik. W takim przypadku po prostu poszukaj pm-suspend.log.1pliku (możesz również znaleźć inne pliki dziennika o nazwach podobnych pm-suspend.log.2.gzi tak dalej; możesz je sprawdzić za pomocą zcatlub zless).


to zadziałało dla mnie
Jacek Pietal

5
Co jeśli pm-suspend.logjest pusty? :(
cprn

1
Jeśli zależy Ci także na zawieszeniu znacznika czasu, użyj:cat /var/log/pm-suspend.log /var/log/pm-suspend.log.1 | grep -B1 Awake; echo "--"; zcat /var/log/pm-suspend.log.*.gz | grep -B1 Awake
webbertiger

2
Nie ma takiego pliku na moim komputerze (z systemem Ubuntu 16.04 LTS)
Ramon Suarez

Plik jest obecny tylko wtedy, gdy zainstalowano PM-Suspend. Ale na przykład Kubuntu przechodzi w stan zawieszenia również po zamknięciu notebooka. Następnie plik zawieszenia PM jest pusty.
dmatej

15

W przypadku komputerów stacjonarnych / serwerów z systemem systemd, chociaż nie ma bezpośredniego polecenia, które poinformuje informacje bezpośrednio (o ile mi wiadomo), wszystkie dane są przechwytywane w dzienniku.

Możesz grep czasopismo, na przykład:

echo ">> [SUSPEND] Times during current boot"
journalctl -b 0 |grep "]: Suspending system..."
echo ">> [WAKE] Times during current boot"
journalctl -b 0 |grep "PM: Finishing wakeup"

Lub, dla fantazyjnych wyników, napisałem skrypt python3 (działa dobrze na Fedorze 23) Przykładowy wynik:

Initial Boot Timestamp:  2016-01-15 09:31:32 

     Wake Timestamp     |    Suspend Timestamp   |       Awake Time       |
  --------------------  |  --------------------  |  --------------------  |
   2016-01-15 09:31:32  |   2016-01-15 09:36:03  |          0h  4m        |
   2016-01-15 09:36:22  |   2016-01-15 19:15:04  |          9h 38m        |
   2016-01-15 19:22:21  |   2016-01-15 20:00:05  |          0h 37m        |
   ...
   -------------------  |  --------------------  |  --------------------  | 

Summary: Days Since Boot [8.23] | Days Awake [4.14] | Suspend/Wake Cycles: [28]

Skrypt znajduje się w github. link do repozytorium github


1
To działało dla mnie na Ubuntu 16.04
raphinesse

Dobrze wiedzieć, że możemy sprawdzić dziennik.
Shiplu Mokaddim

Użyj journalctl -b 0 -o short-iso MESSAGE="PM: Finishing wakeup." | tail -1 | cut -d" " -f1tylko na czas ostatniego
budzenia

13

Program PM-Suspend nie jest jedyną opcją zawieszenia komputera. Mój dziennik tego programu jest teraz pusty, ale znalazłem bardziej niezawodne polecenie:

cat /var/log/syslog | grep 'systemd-sleep' | grep "Suspending\|resumed"

Wyjście to:

Oct  2 09:11:48 dmatej-lenovo systemd-sleep[931]: Suspending system...
Oct  2 09:53:10 dmatej-lenovo systemd-sleep[931]: System resumed.
Oct  2 15:02:48 dmatej-lenovo systemd-sleep[27516]: Suspending system...
Oct  2 16:07:19 dmatej-lenovo systemd-sleep[27516]: System resumed.
Oct  2 16:32:48 dmatej-lenovo systemd-sleep[29622]: Suspending system...
Oct  2 17:16:41 dmatej-lenovo systemd-sleep[29622]: System resumed.
Oct  3 00:24:58 dmatej-lenovo systemd-sleep[21316]: Suspending system...
Oct  3 08:17:22 dmatej-lenovo systemd-sleep[21316]: System resumed.
Oct  3 09:09:25 dmatej-lenovo systemd-sleep[24739]: Suspending system...
Oct  3 09:50:47 dmatej-lenovo systemd-sleep[24739]: System resumed.

1

zmodyfikowana lepsza weryfikacja odpowiedzi na kroki

grep ': Awake' /var/log/pm-suspend.log

edytuj haha ​​dzięki za komentarze: D


I wygrałeś bezużyteczne wykorzystanie catpunktu!
gniourf_gniourf

Brak głosów pozytywnych za bezużyteczne użycie „kota”.
Magellan

1

Nie miałem PM-Suspend.log na moim komputerze.

To działało dla mnie:

/usr/bin/pmset -g log | grep Wake | grep "due to" | tail -n1

Mówi także, co obudziło komputer. :-)


1
Co jeśli nie pmsetznaleziono polecenia i nie ma takiego pliku jak pmseti pm-suspend.logjest pusty? :(
cprn

pm-suspend.logbrakowało i to działa dla mnie (na moim
iMacu

1
To jest tylko dla komputerów Mac
plaisthos

0

Czego używasz, aby zainicjować tryb gotowości?

Jeśli możesz użyć skryptu, to po wierszu

echo -n "standby" > /proc/acpi/sleep

możesz mieć linię

echo `date +%s` >> /var/log/wakeups.log

Lub coś podobnego. Oznaczałoby to, że pierwszą rzeczą, którą zrobiła maszyna po przebudzeniu, było zapisanie bieżącej godziny i daty w pliku dziennika (n sekund od epoki).

Wtedy tail -1 /var/log/wakeups.logdałbym ci ostatni raz. Możesz odjąć to od bieżącego czasu, aby uzyskać sekundy od ostatniego budzenia.


0

Wyszukaj ostatnie wystąpienie ciągu „PM: przywracanie urządzeń zakończone” w / var / log / messages. Jeśli jednak maszyna była zbyt długa, dziennik może zostać obrócony.



0

Odpowiedź „Rozszerzanie kroków”:

grep Awake /var/log/pm-suspend.log | tail -1

Spowoduje to wyświetlenie linii z ostatnim czasem budzenia.


0

Myślę, że to bardzo solidny sposób na zrobienie tego:

systemd[1]: Started Run anacron jobs at resume

Wyszukaj, kiedy system operacyjny uruchomi anakron, nastąpi, jednak urządzenie zostanie włączone


0

Żadna z tych odpowiedzi nie działała dla mnie. Przydatnie jednak znalazłem, sleep.targetktóry jest stworzony właśnie do tego:

$ journalctl -n4 -u sleep.target
nov. 17 17:16:37 kaa systemd[1]: Reached target Sleep.
nov. 17 18:46:22 kaa systemd[1]: Stopped target Sleep.
nov. 17 19:27:31 kaa systemd[1]: Reached target Sleep.
nov. 17 19:45:21 kaa systemd[1]: Stopped target Sleep.

-1

na fedorze przy użyciu ripgrep

rg Suspend /var/log/messages

wynik:

34338:Jul 26 03:03:46 <hostname> systemd-sleep: Suspending system...
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.