Linux怎么查看系统运行时间_Linux查询uptime正常时长【笔记】

uptime命令输出中“up x days, y:z”即系统自上次重启后的连续运行时长;-p参数输出自然语言格式,-s显示启动时间戳;/proc/uptime提供秒级精度原始数据。

linux怎么查看系统运行时间_linux查询uptime正常时长【笔记】

直接看 uptime 命令的输出,第一段数字就是系统已运行时间

执行 uptime 后,最左边一串类似 12:34:56 up 12 days, 3:45 的内容中,“up 12 days, 3:45” 就是系统连续运行时长。这个值从最近一次内核启动开始计时,不因用户登录/登出或服务重启而重置。

注意:uptime 显示的是“自上次 reboot 后的运行时间”,不是“当前会话时长”或“某个服务存活时间”。如果你刚重启过机器,这里显示的就是几分钟;如果服务器稳定运行半年,这里就可能显示 up 182 days, 7:22

uptime -p 输出更易读的“自然语言格式”

默认 uptime 的格式受 locale 影响,有时单位缩写(如 minhrs)不够直观。-p 参数强制输出为 “up 12 days, 3 hours, 45 minutes” 这类明确分段的形式,适合脚本解析或人工快速确认。

  • 不加参数:依赖系统语言环境,中文系统可能显示“up 12 天,3:45”,但冒号分隔的小时分钟不易一眼区分天数和时间
  • -p:统一英文、空格分隔、带单位全称,可读性更高
  • -s:输出系统启动的完整时间戳(如 2024-03-15 09:22:11),可用于反向计算运行时长或比对日志时间

/proc/uptime 读取原始秒数,精度更高

/proc/uptime 是内核暴露的只读文件,第一列数值是以秒为单位的系统运行时间(浮点数,小数部分是百毫秒级精度),第二列是系统空闲总时间(一般不用)。

例如:

Dora

Dora

创建令人惊叹的3D动画网站,无需编写一行代码。

下载

1048576.45 823456.12

表示已运行约 1048576 秒,即 12.13 天。用 awk '{print int($1/86400) " days, " int(($1%86400)/3600) " hrs, " int(($1%3600)/60) " min"}' /proc/uptime 可手动转成易读格式。

为什么需要这个?

  • uptime 命令本身也读取 /proc/uptime,但做了四舍五入和格式封装,丢失了小数精度
  • 某些监控脚本需高精度判断是否“刚启动”(比如 /proc/uptime 更可靠
  • 容器或轻量虚拟化环境中,uptime 可能显示宿主机时间(取决于命名空间配置),而 /proc/uptime 在 PID namespace 隔离下更准确

别把 uptime 和进程运行时间、用户登录时长搞混

常见混淆点:

  • ps -eo pid,comm,etime | head -5 中的 etime 是进程存在时间(秒),不是系统时间
  • wwho -u 显示的是各用户**本次登录**持续时间,和系统 uptime 完全无关
  • systemd 系统中,systemctl show --property=UserspaceTimestamp 返回的是 userspace 初始化完成时间,略晚于内核启动,比 uptime 少几十秒到一两分钟
  • 云服务器(如 AWS EC2)若启用了 hibernation 或 stop/start,uptime 会重置——它只认 kernel reboot,不认平台级暂停

真正反映“系统是否长期稳定”的,还是 uptime/proc/uptime。但要注意:它不体现负载、错误率或服务可用性,只是个基础时序参考。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享