this post was submitted on 06 Feb 2025
32 points (97.1% liked)

Linux

49701 readers
957 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

I'm looking for a reliable way to log when my laptop is:

  • powered down
  • boots up
  • goes to sleep
  • wakes up

Currently I'm checking both the systemd-suspend and tlp systemctl services, but these don't really feel very robust, and I don't have TLP installed on all my machines.

Is there an easier way to do this, or a better systemctl unit that logs all the power states of my machine. Preferably laptop agnostic?

Laptop snippet so far:

journalctl --since -9days -u systemd-suspend -u tlp \
    | grep -P "Finish|Start|Stopped" | sed '/.*Finished TLP.*/d;
            s|Starting TLP.*|╭╴System Boot  |;
 s|Starting System Suspend.*|┤ · Sleep      |;
 s|Finished System Suspend.*|├ · Wake       |;
             s|Stopped TLP.*|╰╴Power Off    |;' \
    | sed -r 's|^(.*:[0-9]+)+:[0-9]+.*:(.*)|   \1 \2 |'
top 4 comments
sorted by: hot top controversial new old
[–] [email protected] 1 points 2 hours ago* (last edited 2 hours ago)

For boot and power down, create a service to log it.

For the others, an elogind script might be what you look for.

[–] [email protected] 2 points 23 hours ago (1 children)

Are you asking about uptime monitoring on a remote host, or the actual last state of the machine once X happens via logged info on the machine?

If the former, you can add a hook that pings somewhere before X action takes place.

For the latter, it should be in dmesg, both going not and coming out of different states.

[–] [email protected] 1 points 23 hours ago (1 children)

I guess uptime monitoring of any host, with specific timestamps for when the system is suspended/resumed.
(Yes I understand that a server ideally shouldn't sleep)

[–] [email protected] 3 points 22 hours ago

in your shoes i would use a loop to iterate through journalctl's up/down sessions getting the first and last lines of each and then use awk to printout the timestamps and sed to add in power state changes.