当你登录到一台 Linux 服务器,通常最先想知道的就是“这台机器跑了多久、现在忙不忙”。uptime 和 w 就是为此设计的简洁命令,它们能在一行输出中提供系统运行时长、当前在线用户数以及系统负载(load average)。
uptime
直接执行 uptime 即可,无需任何参数:
uptime
典型输出:
14:23:45 up 127 days, 3:42, 2 users, load average: 0.15, 0.10, 0.05
从左到右依次是:
- 当前系统时间
- 系统已运行时间(“127 days, 3:42”表示已经连续运行127天3小时42分)
- 当前在线用户数
- 过去 1分钟、5分钟、15分钟 的平均负载
w
w 命令在 uptime 的基础上,增加了每个在线用户在做什么的信息:
w
输出示例:
14:24:01 up 127 days, 3:43, 2 users, load average: 0.15, 0.10, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.100 14:10 5:20 0.05s 0.05s -bash
john pts/1 10.0.0.5 14:20 2.00s 0.02s 0.00s w
- 第一行与
uptime完全一致 - 从第二行开始,列出每个登录用户的用户名、登录终端、来源IP、登录时间、空闲时间、CPU使用时间以及当前正在执行的命令
实际中怎样使用
- 快速判断机器是否最近重启过:如果
up时间只有几小时或几天,而预期应该更长,就值得关注。 - 初步感知系统忙闲:
load average三个数字可以帮你快速判断趋势: - 如果 1 分钟的数值远高于 15 分钟,说明系统负载正在快速上升
- 如果三个数值都接近或持续超过 CPU 核心数,很可能意味着存在排队等待 CPU 的任务,需要进一步排查
- 排查谁在用机器:
w能看到所有活动用户及其操作,如果发现异常登录源或可疑命令,可能就是安全事件的线索
重要概念:什么是“系统负载”
很多人误以为 load average 就是 CPU 使用率,其实并不准确。系统负载统计的是处于可运行状态(等待CPU)和不可中断睡眠状态(通常是等待磁盘I/O完成)的进程数量。因此:
- 一个完全受限于磁盘 I/O 的进程也会推高负载
- 单核 CPU 刚好满负荷运行,负载约为 1.0;双核满负荷则约为 2.0,依此类推
- 偶尔的瞬时高负载(如编译、备份)是正常的,只有持续过高的负载才需要深入调查
因此,当 uptime 显示高负载但用 top 看到 CPU 空闲时,不要困惑——很可能瓶颈在磁盘或网络 I/O 上。uptime 给出的负载数字,是系统整体健康度的一个快速指标,而不是终点诊断。