小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
你好,朋友,你见过最短的Linux命令是什么?能想到一个字母的Linux命令吗,这篇文章我们一起走进短小精悍的
w
命令。
内涵丰富的w
你知道吗,一个小小的w
命令,承担了自己弱小的身体不能承受的分量,它执行后输出的内容相当于以下命令的总和。
- date(时间打印)
- uptime(运行时间+负载)
- who(登录的用户列表)
是不是惊呆了,它全部含义的汇总成一句话,都有谁,在干什么?
分解w
这个命令可太简单了,一个w
诠释一切,还有谁?
$w
复制代码
输出结果如下:
19:13:05 up 6 days, 5:23, 1 user, load average: 0.39, 0.44, 0.38
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 182.148.112.32 09:58 0.00s 0.04s 0.00s w
复制代码
对于这台服务器,我登录了一个用户,所以只显示了一个用户干的事情,那么再登录一个呢?
19:14:39 up 6 days, 5:24, 2 users, load average: 0.34, 0.39, 0.36
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 182.148.112.32 09:58 1:27 0.04s 0.04s -bash
root pts/1 182.148.112.32 15:14 2.00s 0.01s 0.00s w
复制代码
即显示了两条用户干的事情。那下面来层层解析一下输出的内容。
第一行
- 19:13:05,代表当前时间,相当于使用了
date
命令。 - up 6 days, 5:24,代表机器正常运行的时间,即正常运行了6天5小时24分钟了,可喜可贺。这个时间指的是开机登录截止到现在的时间。相当于使用了
uptime
命令。 - load average: 0.34, 0.39, 0.36,表示平均负载,三个数值分别代表1分钟、5分钟、15分钟的平均负载。
对于Linux操作系统,什么是平均负载?它其实代表一段时间内的平均活跃进程数,也就是使用CPU处理器的进程数。比如“1分钟平均负载为0.34”代表近1分钟内平均有0.34个进程使用了处理器,再进一步说就是处理器有34%的时间都是活跃的。
平均负载跟CPU的核心数密切相关,核心数越多,平均负载的值可以越大,比如核心数为8,那么平均负载可以达到7甚至8。那这个值有什么含义呢?如果负载接近核心数,甚至超过了,那么你的机器就过载了,很危险。为了方便可视化,我们可以使用
tload
命令输出负载曲线图。
第一行信息如此丰富,其实单纯使用一个uptime
命令也可以搞定。
$uptime
复制代码
输出为下面所示,完全覆盖重合。
19:52:29 up 6 days, 6:02, 2 users, load average: 0.45, 0.52, 0.47
复制代码
第三行
第二行整体表达的含义其实就是登录用户的信息,我们可以用who
命令代替。
$who
复制代码
输出为
root pts/0 2021-09-29 09:58 (182.148.112.32)
root pts/1 2021-09-29 08:14 (182.148.112.32)
复制代码
但没有w
命令那么详细,其一整行的含义如下
- USER,代表用户名
- TTY,意思是指本地
- FROM,代表用户连接到的服务器的IP地址
- lOGIN@,代表用户连接系统的时间
- IDLE,代表用户有多久没有活跃了
- WHAT,代表当下用户正在运行的程序
这既是对w
命令的整个拆分,虽然w
命令看起来很有用,但是还是有很多细节信息没给出来,我们可以使用ps
和top
命令进一步补充系统进程的信息。