标签 who 下的文章

这里是一个关于理解 Linux 中 who 命令的初学者指南,并带有几个例子。

这篇文章是 Linux 命令学习系列的一部分。

who 命令

Linux 中的 who 命令用于显示当前登录到系统中的用户的信息。它显示用户的登录名,用户登录的终端,用户登录的时间,以及远程主机名(如果有)。

语法

下面是 who 命令的基本语法:

who [OPTION]... [ FILE | ARG1 ARG2 ]

各种 who 命令和开关的例子

默认情况下,who 读取文件 /var/run/utmp,其中包含当前登录的用户的信息。如果没有指定选项,它会显示每个用户的登录名、终端和登录时间。

who

它给出了以下输出。你可以看到它显示了登录名是 debugpoint,终端 ID tty2 和登录的日期和时间。

debugpoint tty2 2023-01-01 11:22 (tty2)

who 命令 - 默认示例

然而,如果你在虚拟机中运行上述命令,你应该看到同样的情况,但终端 ID 将是 x11 服务器的显示名称,即 :0

❯ who
debugpoint :0 2023-01-01 23:36 (:0)

要显示当前用户的用户名和信息,使用下面的方法:

whoami

使用 -b 选项查看最后一次系统启动时间:

❯ who -b
system boot 2023-01-01 23:36

显示当前系统中登录的用户数:

❯ who -q
debugpoint
users=1

所有上述命令与 -H 选项配对时,你会有一个更好的含标题行的信息,如下所示:

who -H

NAME LINE TIME COMMENT
debugpoint tty2 2023-01-01 11:22 (tty2)

如果你想在 Linux 中显示与 who 命令有关的所有信息,请使用选项 -a

who -aH

NAME LINE TIME IDLE PID COMMENT EXIT
system boot 2023-01-01 11:19
run-level 5 2023-01-01 11:19
debugpoint + tty2 2023-01-01 11:22 13:26 2042 (tty2)

像往常一样,你可以使用下面的重定向将 who 命令的输出保存到任何文件:

who > user_details.txt

who 命令选项的例子总结

下面是一些 who 命令的例子和它们的解释:

下面是一些可以与 who 命令一起使用的选项:

  • -a: 显示每个用户的主机名、登录时间和进程
  • -b: 显示上次系统启动的时间
  • -d: 显示死进程(已终止但未从 utmp 文件中删除的进程)
  • -H: 显示标题行
  • -l: 显示长格式的登录进程
  • -m: 只显示在 ARG1 ARG2 指定的终端上登录的用户的名字和行。
  • -q: 显示已登录用户的数量
  • -u: 显示拥有未脱离进程的用户的信息
  • -w: 显示已经登录的用户信息,格式与 utmp 文件相同

总结

我希望这篇文章能够帮助你了解 who 命令及其基本原理。你也可以阅读 who 手册页来了解更多。如果你有任何问题,请告诉我。


via: https://www.debugpoint.com/who-command-linux/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

有很多监控工具可用来监控本地和远程 Linux 系统,一个很好的例子是 Cockpit。但是,这些工具的安装和使用比较复杂,至少对于新手管理员来说是这样。新手管理员可能需要花一些时间来弄清楚如何配置这些工具来监视系统。如果你想要以快速且粗略地在局域网中一次监控多台主机,你可能需要了解一下 “rwho” 工具。只要安装了 rwho 实用程序,它将立即快速地监控本地和远程系统。你什么都不用配置!你所要做的就是在要监视的系统上安装 “rwho” 工具。

请不要将 rwho 视为功能丰富且完整的监控工具。这只是一个简单的工具,它只监视远程系统的“正常运行时间”(uptime),“负载”(load)和登录的用户。使用 “rwho” 使用程序,我们可以发现谁在哪台计算机上登录;一个被监视的计算机的列表,列出了正常运行时间(自上次重新启动以来的时间);有多少用户登录了;以及在过去的 1、5、15 分钟的平均负载。不多不少!而且,它只监视同一子网中的系统。因此,它非常适合小型和家庭办公网络。

在 Linux 中监控多台主机

让我来解释一下 rwho 是如何工作的。每个在网络上使用 rwho 的系统都将广播关于它自己的信息,其他计算机可以使用 rwhod 守护进程来访问这些信息。因此,网络上的每台计算机都必须安装 rwho。此外,为了分发或访问其他主机的信息,必须允许 rwho 端口(例如端口 513/UDP)通过防火墙/路由器。

好的,让我们来安装它。

我在 Ubuntu 16.04 LTS 服务器上进行了测试,rwho 在默认仓库中可用,所以,我们可以使用像下面这样的 APT 软件包管理器来安装它。

$ sudo apt-get install rwho

在基于 RPM 的系统如 CentOS、 Fedora、 RHEL 上,使用以下命令来安装它:

$ sudo yum install rwho

如果你在防火墙/路由器之后,确保你已经允许使用 rwhod 513 端口。另外,使用命令验证 rwhod 守护进程是否正在运行:

$ sudo systemctl status rwhod

如果它尚未启动,运行以下命令启用并启动 rwhod 服务:

$ sudo systemctl enable rwhod
$ sudo systemctl start rwhod

现在是时候来监视系统了。运行以下命令以发现谁在哪台计算机上登录:

$ rwho
ostechni ostechnix:pts/5 Mar 12 17:41
root server:pts/0 Mar 12 17:42

正如你所看到的,目前我的局域网中有两个系统。本地系统用户是 ostechnix (Ubuntu 16.04 LTS),远程系统的用户是 root (CentOS 7)。可能你已经猜到了,rwhowho 命令相似,但它会监视远程系统。

而且,我们可以使用以下命令找到网络上所有正在运行的系统的正常运行时间:

$ ruptime
ostechnix up 2:17, 1 user, load 0.09, 0.03, 0.01
server up 1:54, 1 user, load 0.00, 0.01, 0.05

这里,ruptime(类似于 uptime 命令)显示了我的 Ubuntu(本地) 和 CentOS(远程)系统的总运行时间。明白了吗?棒极了!以下是我的 Ubuntu 16.04 LTS 系统的示例屏幕截图:

你可以在以下位置找到有关局域网中所有其他机器的信息:

$ ls /var/spool/rwho/
whod.ostechnix whod.server

它很小,但却非常有用,可以发现谁在哪台计算机上登录,以及正常运行时间和系统负载详情。

建议阅读:

请注意,这种方法有一个严重的漏洞。由于有关每台计算机的信息都通过网络进行广播,因此该子网中的每个人都可能获得此信息。通常情况下可以,但另一方面,当有关网络的信息分发给非授权用户时,这可能是不必要的副作用。因此,强烈建议在受信任和受保护的局域网中使用它。

更多的信息,查找 man 手册页。

$ man rwho

好了,这就是全部了。更多好东西要来了,敬请期待!

干杯!


via: https://www.ostechnix.com/how-to-quickly-monitor-multiple-hosts-in-linux/

作者:SK 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

作为一名系统管理员,我们需要弄清楚在一个特定的时间点都有谁活跃在系统上。必须严密监视我们的服务器。但是,我们当然不可能一天24小时都盯着系统。在linux系统中,我们可以使用who命令查看登录者信息。

什么是 who 命令

who命令能够打印 当前都有谁登录到系统中 的相关信息 。who命令只会显示真正登录到系统中的用户。它不会显示那些通过su命令切换用户的登录者。

如何使用who命令

在大多数linux发行版中,who命令都是默认安装上的。想使用该命令,只需在控制台敲命令就行了。不带选项的话,运行该命令产生默认输出。

$ who

如何理解输出:

  • 第一列显示用户名称
  • 第二列显示用户连接方式。Tty意味着用户直接连接到电脑上,而pts意味着远程登录。
  • 第三、四列分别显示日期和时间
  • 第五列显示用户登录IP地址。

使用带参数的who命令

Who命令有一些参数用于调整输出。以下是常用的例子。

显示上一次重新启动的时间和日期

使用 -b 选项

$ who -b

可以看到系统启动是在2013年12月21日,下午3:52。

显示初始化进程的当前运行级别

使用 -r 选项,who命令会打印出初始化进程的当前运行级别

$ who -r

输出显示2013年12月21日,下午3:52系统以 级别2 开始运行。

为每一列添加标题

使用 -H 选项为每一列添加标题

$ who -H

只打印当前运行终端的相关信息

可以使用-m选项。

$ who -m

对当前登录用户数量计数

如果系统同时有多人登录在线,-q 选项协助你完成计数功能。

$ who -q

附加空闲时间和PID信息

默认情况下,who命令不会打印空闲时间和PID信息。如果打算显示这些信息,使用-u选项。不要忘记使用 -H选项让显示的信息更加简单易读。

$ who -u -H

空闲时间 包含了最近最后一次活动以来消逝的时间. 所以,00:13 意思是 用户leni已经13分钟没执行过命令了. (.)符号 是指该终端过去的一分钟有过活动。在那期间,我们称之为 “current” 。PID 是用户shell程序的进程ID号。

显示登录进程

使用-l选项

$ who -l

第一列只显示系统登录守护进程的名字。上面截图中的数字 967, 971等是进程ID。

显示所有信息

使用-a选项会显示所有信息。例如:

$ who -a

总结

你会发现 who 命令跟 w 命令在某些方面有些相像。不要为此感到疑惑,为什么linux要实现这些在功能上相近的命令。你可以使用你觉得最适合你的或者适用于某种场合的命令。请查阅who命令手册了解更多详细信息。


via: http://linoxide.com/linux-command/linux-who-command/

译者:l3b2w1 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出