当我们登录到一台服务器时,最想了解的信息之一往往是:这台机器已经运行了多久?当前负载高不高?uptime 命令恰好能同时回答这两个问题。
顾名思义,uptime 命令用于显示系统已经运行了多长时间。同时,它还会显示:
- 系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载
下面将详细介绍如何使用 uptime 命令,以及如何解读其输出结果(包括系统负载的含义)。
# 快速参考
| 任务 | 命令 |
|---|
| uptime |
| uptime -p |
| uptime -s |
| cat /proc/uptime |
1. uptime 命令语法
uptime [选项]
要显示系统的运行时间,直接运行不带任何选项的命令:
[root@ymvps ~]# uptime
13:56:44 up 136 days, 22:48, 1 user, load average: 21.88, 21.82, 21.83
# 输出解读(从左到右)
| 字段 | 示例值 | 含义 |
|---|
| 13:56:44 | |
| up 136 days, 22:48 | 系统已持续运行了 136 天 22 小时 48 分钟 |
| 1 user | |
| load average: 21.88, 21.82, 21.83 | |
补充说明:uptime 显示的信息与 w 命令的头部信息完全相同,也出现在 top 命令的顶部区域。
2.理解系统负载平均值(Load Average)
Linux 中的负载平均值(Load Average)可能会让人感到有些困惑,与其他操作系统仅报告 CPU 负载不同,Linux 报告的是系统负载。
2.1什么是系统负载平均值?
系统负载平均值是对正在运行或正在等待资源(如 CPU 时间或磁盘 I/O)的进程数量的一种度量。简而言之,它告诉我们系统在给定时间段内有多繁忙。
以上面物理机实际的输出为例:
load average: 21.88, 21.82, 21.83
| 时间间隔 | 负载值 | 含义 |
|---|
| | 过去 1 分钟内平均有约 22 个进程在运行或等待 |
| | 过去 5 分钟内平均有约 22 个进程在运行或等待 |
| | 过去 15 分钟内平均有约 22 个进程在运行或等待 |
2.2 如何判断负载趋势?
2.3 如何判断 CPU 是否成为瓶颈?
对于 CPU 密集型的工作负载,需要将负载平均值与逻辑 CPU 核心数进行比较。
本机配置CPU核心数如下:
[root@ymvps ~]# nproc
64
或者:
[root@ymvps ~]# lscpu | grep -E '^CPU\(s\)|^Thread'
CPU(s): 64
Thread(s) per core: 2
[root@ymvps ~]#
该服务器拥有 64 个逻辑 CPU 核心。
结论:虽然负载值 21.88 看起来不小,但考虑到服务器拥有 64 个逻辑核心,实际 CPU 利用率并不高,系统整体运行较为轻松。
2.4判断标准参考
重要提醒:这只是一个粗略的参考指标。因为 Linux 的负载统计还包括处于不可中断睡眠(uninterruptible sleep)状态的任务,这些任务通常是在等待磁盘 I/O。因此,负载升高可能是因为 CPU 使用率高,也可能是因为磁盘活动频繁。
3.uptime 命令常用选项
uptime 命令支持的选项并不多,以下是常用选项:
3.1 人类可读格式:-p(--pretty)
显示格式更加友好的运行时间:
[root@ymvps ~]# uptime -p
up 136 days, 22 hours, 48 minutes
仅显示系统已运行多长时间,不包含负载等其他信息。
3.2 显示启动时间:-s(--since)
显示系统的启动日期和时间:
[root@ymvps ~]# uptime -s
2026-01-27 15:08:44
说明:136 天前为 2026 年 1 月 27 日左右(具体时间根据实际环境计算)。
3.3 不通过 uptime 命令读取运行时间
uptime 命令本身是从内核中读取数据的,我们可以直接从 /proc/uptime 文件中获取原始值:
[root@ymvps ~]# cat /proc/uptime
11831687.54 11502314.37
| 字段 | 数值 | 换算 |
|---|
| 11831687.54秒 | |
| 11502314.37秒 | |
计算验证:11831687.54 ÷ 86400(每天的秒数)≈ 136.94 天,与 uptime 显示的 136 天 22 小时 48 分钟吻合。
4. 常见问题
4.1 如何查看 Linux 服务器已经运行了多长时间?
[root@ymvps ~]# uptime
13:56:44 up 136 days, 22:48, 1 user, load average: 21.88, 21.82, 21.83
或使用更友好的格式:
[root@ymvps ~]# uptime -p
up 136 days, 22 hours, 48 minutes
4.2uptime 中的负载平均值(load average)是什么意思?
它表示在过去 1 分钟、5 分钟和 15 分钟内,处于运行状态或等待资源的任务的平均数量。
以本例为参考:
请记住:等待磁盘 I/O 的任务同样会计入 Linux 负载中。
4.3:如何查看系统的上一次启动时间?
[root@ymvps ~]# uptime -s
2026-01-27 15:08:44
此外,who -b 命令也能显示相同的信息:
[root@ymvps ~]# who -b
system boot 2026-01-27 15:08
4.4 负载值 21.88 算是高负载吗?
答案取决于核心数:
| 核心数 | 负载 21.88 的含义 |
|---|
| |
| |
| |
| |
| 64 核(本例) | 低负载,运行轻松 |
| |
5. 总结
uptime 命令是快速查看系统运行时间和繁忙程度的便捷工具。通过一条简单的命令,我们可以同时获得:
- 系统运行了多久(本例:136 天 22 小时 48 分钟)
- 系统在过去 1、5、15 分钟的负载趋势(本例:21.88, 21.82, 21.83)
实际案例解读:
- 运行时间:136 天,说明服务器长期稳定运行,未重启
- 结论:负载仅为核心数的 34%,CPU 资源充裕,系统运行正常
当我们发现负载平均值偏高、需要进一步排查具体是哪些进程导致的高负载时,可以接着使用 top、htop 或 ps 等命令进行深入分析。
关于uptime命令,表格如下:
uptime # 查看运行时间+负载
uptime -p # 人类可读的运行时间
uptime -s # 查看上次启动时间
cat /proc/uptime # 以秒为单位的原始运行时间
who -b # 另一种查看启动时间的方式