最新消息:

Linux系统管理工具包: 监视用户的使用情况

Linux运维 大步 771浏览 0评论

http://club.topsage.com/thread-227415-1-1.html
研究在各种不同的日志中记录 UNIX 登录和其他系统活动的新方法,并利用这些信息来监视用户的使用情况。从很多角度来看,这样做是非常有帮助的,可以用于进行退款报告,或者仅用于了解系统中个别用户的繁忙和活跃程度,以便在进行规划和分配资源的时候能够起到帮助作用。

关于本系列

典型的 UNIX 管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统。存在各种用于简化不同过程的关键实用工具、命令行链和脚本。其中一些工具来自于操作系 统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异构环境中的管理任务的方法。

获取当前用户的信息

要获取当前使用 UNIX 系统的用户的列表,可以使用很多不同的方式。其中最显而易见、且最直接的方式是使用 who 命令。who 命令可以返回一个列表,该列表中包括当前登录的用户、他们所连接到的终端、他们登录的日期,以及他们登录的主机名的 IP 地址(如果他们是远程用户的话)。

您可以参见下面清单 1 中给出的示例。

清单 1. 使用 who 命令,以返回当前登录用户的列表

  1. $ who
  2. mc         pts/2        Sep 12 14:29    (sulaco.mcslp.pri)
  3. mcbrown    pts/3        Sep 12 14:37    (nautilus.mcslp.pri)

复制代码

在某些系统中,还可以使用 -q 命令行选项,以提供一种更快捷的格式,如清单 2 中所示。

清单 2. 带 -q 选项的 who 命令

  1. $ who -q
  2. mc       mcbrown
  3. # users=2

复制代码

这个输出与某些系统中提供的、另一个名为 users 的命令的输出很类似,后者仅输出用户的列表,而不对其进行计数(请参见清单 3)。

清单 3. users 命令

  1. $ users
  2. mc  mcbrown

复制代码

通 常,您可以通过添加 -a 和 -H 命令行选项来查找更详细的信息。-a 选项包括所有来自 /var/adm/utmpx 文件的最新信息,该文件用于记录登录信息。这个文件还可以记录其他事件,如启动的日期和时间,以及最近的运行级别更改。在本文稍后的内容中,您将进一步地 了解该文件中存储的相关信息。-H 选项用于为输出中的各列添加标题信息。您可以参见清单 4 中给出的示例。

清单 4. 带 -a 和 -H 选项的 who 命令

  1. $ who -aH
  2. NAME       LINE         TIME          IDLE    PID  COMMENTS
  3.    .       system boot  Sep 12 11:35
  4.    .       run-level 3  Sep 12 11:35     3      0  S
  5. zsmon           .       Sep 12 11:35  3:14    215
  6. LOGIN      console      Sep 12 11:35  0:20    221
  7. LOGIN      console      Sep 12 11:35  0:20    510       (:0)
  8. mc       + pts/2        Sep 12 14:29   .      569       (sulaco.mcslp.pri)
  9. mcbrown  + pts/3        Sep 12 14:37  0:12    675       (nautilus.mcslp.pri)

复制代码

通 过开头的两行,您可以了解最近一次启动系统的时间,以及最近一次运行级别更改的日期和详细情况。这里所显示的计算机正在运行 Solaris,并且它使用 zsmon 守护进程来监视串行端口上的登录。然后,您将拥有两个到控制台的、标记的登录,其中一个是活动用户的登录,而另一个则附加到 X 服务器(:0 表示 X 窗口系统的屏幕参考)。

最后的两行是使用安全 Shell (SSH) 的远程登录。对于所有的活动进程,您都将获取一个进程 ID,这意味着您可以在 ps 列表中通过 ID 来识别原始用户。

LINE 列是用户所连接到的终端;控制台显然是该计算机的主键盘和监视器。pts 行指的是自动创建的、用以处理远程 SSH 连接的伪终端。

当然,了解谁正在使用本地计算机是一件很有趣的工作,但是对于网络中其他的计算机,情况又如何呢?

获取远程用户的信息

有两个后台服务可以提供远程用户的信息,它们分别是 rusers 和 rwho,分别通过两个守护进程 rusersd(通常称为 in.rusersd)和 rwhod(也称为 in.rwhod)来实现。这两个服务都依赖于远程过程调用(Remote Procedure Call,RPC)协议,以便在整个网络的范围内共享信息。

以前一直认为,启用 rwhod 和 rusersd 是对网络资源的浪费,因为这两个守护进程在网络中不断地广播信息,从而占用了带宽。在拥有大量主机的网络中,所生成的信息量可能是非常大的。现在,与网络的传输速度相比,所生成的信息量相对较小。

rwhod 和 rusersd 在所有的系统中都是不可用的,但是对于那些提供了相应工具的系统来说,使用这些工具可以很容易地获取您所想要的信息。如果这些工具还没有运行,那么您需要启动 in.rwhod 和 in.rusersd 守护进程。

一旦这两个守护进程开始运行,您就可以使用各种各样的工具输出所有计算机的相关信息。rwho 工具是 who 工具的远程、支持网络的版本。清单 5 给出了一个示例。

清单 5. rwho 工具

  1. $ rwho -a
  2. mc       solaris-desktop:console Sep 12 11:29  3:41
  3. mc       solaris-desktop:pts/1   Sep 12 11:32   :06
  4. mc       ultra3:pts/2            Sep 12 14:29
  5. mcbrown  ultra3:pts/3            Sep 12 14:37   :37
  6. M

复制代码

rwhod 工具发出广播信息,并且捕获来自其他主机的广播信息,在 /var/spool/rwhod 目录中对其进行整理。

rusers 工具向网络上其他主机中的 rusersd 守护进程发送广播,以便返回当前登录的用户的信息,如清单 6 所示。

清单 6. rusers 工具

  1. $ rusers
  2. Sending broadcast for rusersd protocol version 3...
  3. 192.168.0.31 mc mcbrown
  4. solaris-desktop. mc mc

复制代码

在 rwhod 守护进程开始运行之后,还可以使用另一个工具 ruptime,该工具可以返回本地网络中所有运行 rwhod 的服务器的加载和正常运行时间信息。清单 7 显示了一个示例。对于确定多台计算机的状

转载请注明:大步's Blog » Linux系统管理工具包: 监视用户的使用情况

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
SiteMap