How to accurately determine when the system was booted
It is very easy to tell how long the system has been running using uptime
command, but the information when exactly it was booted is not so apparent, so I will show you two different ways to get it.
The first way - the simplest one
Use last
command to display the system shutdown entries and run level changes, limit output to the boot
entries, and display only the first one.
$ last -x | grep boot | head -1 reboot system boot 3.2.0-4-amd64 Sat Oct 19 12:44 - 23:24 (8+11:40)
Sat Oct 19 12:44
, current time is 23:24
, and the uptime is 8 days, 11 hours, and 40 minutes
.The following examples demonstrate two simple ways to print the time when the system was booted, each one using different sets of commands.
$ last -x | awk '$3 ~ /boot/ {print $5 " " $6 " " $7 " " $8; exit}' Sat Oct 19 12:44
$ last -x | grep -m 1 boot | tr -s ' ' | cut -d ' ' -f 5-8 Sat Oct 19 12:44
The second way - the more interesting one
Alternative solution is to read the /proc/uptime
file, where the first number is the total number of seconds the system has been up and running.
$ cat /proc/uptime 735751.39 778420.68
735751
seconds which equals to 8 days, 12 hours, 22 minutes
.You can accurately determine when the system was booted using date
command.
$ date --date "now - `cut -d ' ' -f 1 /proc/uptime` seconds" Sat Oct 19 12:43:25 CEST 2013
The above-mentioned command construction shortly explains why I think that this solution is more interesting.