【奇技淫巧】Linux | 趣味命令-短小精悍的w

1,297 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

你好,朋友,你见过最短的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命令看起来很有用,但是还是有很多细节信息没给出来,我们可以使用pstop命令进一步补充系统进程的信息。