Tuptime | Advanced System Uptime Tracking for Linux
Discover how tuptime enhances uptime tracking for system administrators with detailed historical data

Driving SD-WAN Adoption in South Africa
In the world of system administration, keeping tabs on your server's uptime isn't just a nice-to-have—it's essential for diagnosing issues, planning maintenance, and ensuring reliability. While the standard uptime command gives you a quick snapshot of how long your system has been running, it falls short when you need historical data across reboots. Enter tuptime, a lightweight, open-source tool that supercharges uptime reporting by tracking cumulative and per-session statistics, preserving everything in a simple SQLite database.
Developed by Ricardo Marmolejo García and hosted on GitHub, tuptime has been a go-to utility for Linux and FreeBSD admins since its inception. As of October 2025, it's actively maintained, with over 1,000 stars on GitHub and broad compatibility across distributions. Whether you're running a home server, a cloud VM, or an enterprise fleet, tuptime provides insights that go far beyond basic uptime checks.
Why Choose Tuptime Over the Standard uptime Command?
The built-in uptime command is great for a one-liner glance:
14:23:45 up 5 days, 2:15, 1 user, load average: 0.10, 0.20, 0.25
But it resets on every reboot, ignoring your system's full history. Tuptime solves this by:
Preserving Data Across Reboots: Logs every startup, shutdown, uptime, and downtime in a persistent database.
Statistical Insights: Reports total system life, average session lengths, longest downtimes, and more.
No Daemon Overhead: Runs via cron jobs and init hooks—super lightweight (under 1MB footprint).
False-Positive Protection: Ignores glitches from NTP syncs, suspend/resume, or virtualization pauses.
Flexible Output: Default summary, tables, lists, CSV, or raw epochs for scripting.
Queryable Database: SQLite means you (or other tools) can run custom queries on your data.
| Feature | Standard uptime | Tuptime |
| Historical Data | No | Yes (SQLite DB) |
| Per-Boot Sessions | No | Yes |
| Statistics (Avg/Longest) | No | Yes |
| Output Formats | Text only | Table, List, CSV, Epoch |
| Dependencies | None | Python 3, SQLite |
| Overhead | None | Minimal (cron-based) |
Tuptime shines in scenarios like auditing server reliability, generating reports for SLAs, or integrating with monitoring stacks like Prometheus.
Key Features at a Glance
Core Metrics: Startups, shutdowns, total life, current uptime, cumulative up/down time.
Advanced Stats: Longest/average uptime & downtime, sleeping time accumulation.
Filtering & Sorting: By date, duration, or labels.
Export Options: CSV for Excel/Pandas, epochs for timestamps.
Kernel & Boot Info: Includes boot IDs and kernel versions.
Cross-Platform: Linux (all distros), FreeBSD; partial macOS support via ports.
Installing Tuptime | The Famous One-Line Script
Tuptime's hallmark is its dead-simple installation via a single bash command. No downloads, no fuss—just pipe and run. This one-liner fetches the official install script from Git.io (a GitHub URL shortener) and executes it:
bash < <(curl -Ls https://git.io/tuptime-install.sh)
How It Works
curl -Ls: Downloads silently (-s), follows redirects (-L), shows errors (-S? Wait, it's -s for silent).< <(...): Process substitution—feeds the script directly to bash without saving to disk.The script:
Installs Python 3 and SQLite if missing (uses your distro's package manager).
Copies the
tuptimebinary to/usr/bin/.Initializes the database (
/var/lib/tuptime/tuptime.db).Sets up cron jobs for updates.
Configures init hooks (Systemd/OpenRC) for boot/shutdown logging.
Time to Install: Under 30 seconds on a fresh Ubuntu/Debian box.
Requirements: Root access, internet connection. Tested on Ubuntu 24.04, Debian 12, Fedora 41, Arch, and FreeBSD 14.
Usage Examples | From Basic to Power User
1. Basic Summary (Default)
tuptime
Sample Output:
System startups: 12
System shutdowns: 11
System life: 1 year, 2 months
Longest uptime: 45 days
Average uptime: 30 days
Current uptime: 5 days
Cumulative downtime: 2 weeks
2. Table View (Per-Session Breakdown)
tuptime -t
Output:
# Startup Uptime Shutdown Downtime
1 2024-01-01 45d 2024-02-15 1h
2 2024-02-16 3d 2024-02-19 2h
...
3. List View (Detailed)
tuptime -l
Detailed per-boot info, including kernel and boot ID.
4. CSV Export (For Reporting)
tuptime --csv > uptime_report.csv
Pipe to column -t or import into spreadsheets.
5. Raw Epochs (Scripting)
tuptime --epoch
Outputs Unix timestamps for automation.
6. Filter Recent Sessions
tuptime -t --since 2025-01-01
Supported Operating Systems and Compatibility
Linux: All major distros (Ubuntu, Debian, Fedora, CentOS/RHEL, Arch, openSUSE). Systemd, OpenRC, SysVinit.
FreeBSD: Native ports available.
macOS: Experimental via Homebrew (not officially supported).
Python: 3.6+ required.
Database: SQLite3 (auto-created, ~1KB per entry).
No issues with containers (Docker), VMs, or multi-user setups.
Maintaining and Troubleshooting Tuptime
Update Database: Auto via cron; manual:
sudo tuptime -q.Reset Data:
sudo rm /var/lib/tuptime/tuptime.db && sudo tuptime.View DB:
sqlite3 /var/lib/tuptime/tuptime.db "SELECT * FROM tuptime;"Logs: Check
/var/log/tuptime.logfor verbose mode (tuptime -v).Common Fixes:
| Issue | Solution | | --- | --- | | No historical data | Run
sudo tuptimeinitially | | Cron not updating |sudo systemctl restart cron| | NTP skew warnings | Enablesystemd-time-wait-sync| | Permission errors | chowntuptime:tuptimeon DB |
Wrap | Level Up Your Uptime Game
Tuptime transforms a simple uptime check into a powerful analytics tool, all with one line to install. In under a minute, you'll have historical insights that save hours of manual logging. Whether you're a solo dev tracking a Raspberry Pi or an admin monitoring a data center, tuptime delivers reliability without complexity.
Ready to start? Fire up your terminal and run:
bash < <(curl -Ls https://git.io/tuptime-install.sh)
Then tuptime—watch the magic unfold.
For more, check the full manual or join the community discussions on GitHub. Happy monitoring! 🚀

Ronald Bartels | LinkedIn | Instagram




