Linux See Historical and Statistical Uptime of System With tuptime

last updated in Categories Command Line Hacks, Hardware

You can use the following tools to see how long system has been running on a Linux or Unix-like system:

Finding out the system last reboot time and date

You can use the following commands to get the last reboot and shutdown time and date on a Linux operating system (also works on OSX/Unix-like system):

## Just show  system reboot and shutdown date and time ###
who -b
last reboot
last shutdown
## Uptime info ##
uptime
cat /proc/uptime
awk '{ print "up " $1 /60 " minutes"}' /proc/uptime 
w

Sample outputs:

Fig.01: Various Linux commands in action to find out the server uptime
Fig.01: Various Linux commands in action to find out the server uptime

Say hello to tuptime

The tuptime command line tool can report the following information on a Linux and FreeBSD based system:

  1. Count system startups
  2. Register first boot time (a.k.a. installation time)
  3. Count nicely and accidentally shutdowns
  4. Average uptime and downtime
  5. Current uptime
  6. Uptime and downtime rate since first boot time
  7. Accumulated system uptime, downtime and total
  8. Report each startup, uptime, shutdown and downtime

Installation

Type the following command to clone a git repo on a Linux operating system:
$ cd /tmp
$ git clone https://github.com/rfrail3/tuptime.git
$ ls
$ cd tuptime
$ ls

Sample outputs:

Fig.02: Cloning a git repo
Fig.02: Cloning a git repo

Make sure you’ve Python v2.7/3.x installed with sys, optparse, os, re, string, sqlite3, datetime, disutils, and locale modules. You can simply install it as follows:
$ sudo tuptime-install.sh

How to do a manual installation

Copy the “tuptime” file located under “latest/” directory to “/usr/bin/” using cp command and make it executable using the chmod command:
sudo cp -v /tmp/tuptime/src/tuptime /usr/bin/tuptime
sudo chmod ugo+x /usr/bin/tuptime

Make sure you have Python version 3.x installed and working correctly:
python3 --version
Sample outputs:

Python 3.7.3

Package installation for Linux and FreeBSD

Debian or Ubuntu Linux user (), run apt command/apt-get command:
sudo apt update
sudo apt install tuptime

Arch Linux user run pacman command:
sudo pacman -S pkgfile

A note about FreeBSD users

FreeBSD Unix users try the pkg command to install the same:
sudo pkg install tuptime

Linux See Historical and Statistical Uptime of System With tuptime
FreeBSD installation in action

Another option for FreeBSD is to install the port as follows:
cd /usr/ports/sysutils/tuptime/ && make install clean
tuptime requires execution at startup and shutdown on rc.d on FreeBSD, so add to /etc/rc.conf:
tuptime_enable="YES"
Finally, tuptime requires a scheduled execution on cron, therefore run crontab -e:
# crontab -e
Append the following line :
*/5 * * * * root /usr/local/bin/tuptime -x > /dev/null
Save and close the file. Start the service on FreeBSD:
# service tuptime start

Run it

Simply type the following command:
$ sudo tuptime
Sample outputs:

Fig.03: tuptime in action
Fig.03: tuptime in action

After kernel upgrade I rebooted the box and typed the same command again:

$ sudo tuptime
System startups:	2   since   03:52:16 PM 08/21/2015
System shutdowns:	1 ok   -   0 bad
Average uptime: 	7 days, 16 hours, 48 minutes and 3 seconds
Average downtime: 	2 hours, 30 minutes and 5 seconds
Current uptime: 	5 minutes and 28 seconds   since   06:23:06 AM 09/06/2015
Uptime rate: 		98.66 %
Downtime rate: 		1.34 %
System uptime: 		15 days, 9 hours, 36 minutes and 7 seconds
System downtime: 	5 hours, 0 minutes and 11 seconds
System life: 		15 days, 14 hours, 36 minutes and 18 seconds

You can change date and time format as follows:
$ sudo tuptime -d '%H:%M:%S %m-%d-%Y'
Sample outputs:

System startups:	1   since   15:52:16 08-21-2015
System shutdowns:	0 ok   -   0 bad
Average uptime: 	15 days, 9 hours, 21 minutes and 19 seconds
Average downtime: 	0 seconds
Current uptime: 	15 days, 9 hours, 21 minutes and 19 seconds   since   15:52:16 08-21-2015
Uptime rate: 		100.0 %
Downtime rate: 		0.0 %
System uptime: 		15 days, 9 hours, 21 minutes and 19 seconds
System downtime: 	0 seconds
System life: 		15 days, 9 hours, 21 minutes and 19 seconds

Enumerate each startup, uptime, shutdown and downtime:
$ sudo tuptime -e
Sample outputs:

Startup:  1  at  03:52:16 PM 08/21/2015
Uptime:   15 days, 9 hours, 22 minutes and 33 seconds
 
System startups:	1   since   03:52:16 PM 08/21/2015
System shutdowns:	0 ok   -   0 bad
Average uptime: 	15 days, 9 hours, 22 minutes and 33 seconds
Average downtime: 	0 seconds
Current uptime: 	15 days, 9 hours, 22 minutes and 33 seconds   since   03:52:16 PM 08/21/2015
Uptime rate: 		100.0 %
Downtime rate: 		0.0 %
System uptime: 		15 days, 9 hours, 22 minutes and 33 seconds
System downtime: 	0 seconds
System life: 		15 days, 9 hours, 22 minutes and 33 seconds
Conclusion

The uptime command show how long system has been up, and w command shows who is logged in and what they are doing. However, tuptime tool is an exciting tool to report the historical and statistical real time of the system, keeping it between restarts. It is just like uptime command but with more appealing output.

This entry is 1 of 2 in the Linux uptime series. Keep reading the rest of the series:
  1. Report the historical and statistical running time of Linux system
  2. How to records statistics about a Linux machine's uptime

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

Start the discussion at www.nixcraft.com

Historical Comment Archive

2 comment

  1. Actually in Debian it runs as a unprivileged user with python3. The table output is very helpfull.

  2. There’s absolutely no reason to run it as root, or with sudo. I simply made /var/lib/tuptime writable by my local, non-root user, and tuptime runs just fine.

    Oh, yeah, if you run Arch, in the install script `python –version…` returns 3.4 currently, you’ll want to change that to `python2 –version`.

    Still, have a question? Get help on our forum!