- Linux系统管理员如何了解用户在做什么
- 发布时间:2009-03-26 10:36:30 浏览数:7812 发布者:lutr 设置字体【大 中 小】
Linux系统是一个多用户的操作系统,每个登陆到系统的用户都能够执行不同的程序。但是有时候管理员需要维护操作系统,如重新启动服务器等等。此时系统管理员必须要知道当前有哪些用户登录在这台系统中,在执行哪些操作。不然的话,如果管理员不管三七二十一,就强制重新启动服务器的话,就可能会给其他用户带来不可挽回的损失。
为此管理员必须要能够了解当前登录的用户以及他们在执行的操作。只有如此管理员才能够通知用户及时保存文件,免得文件丢失。如果要达到这个目的,系统管理员就要采用w命令。下面笔者分析一下系统管理员如何通过这个命令了解用户当前的操作。这个命令的示意图如下:

如上图,这个命令可以告诉大家如下信息。
第一行:系统当前运行的基本信息。
在第一行中,总共有三个字段,主要告诉管理员系统当前基本信息。
第一个字段表示时间信息。前面的09:52:36表示系统当前的时间。后面的up 14 days表示距离上次系统重新启动已近共有14天的时间。通过这个参数,管理员可以了解Linux服务器的持续运营时间。这可以给管理员进行系统维护提供帮助。后面的1:45则表示服务器上次启动的具体时间。如果管理员怀疑服务器意外重新启动过,可以通过这个参数来确认。
第二个字段为当前用户登录的总人数。这里需要注意的是,在Linux系统中,同一个账户可以重复登录,因此会见到重复的帐号名称。通常情况下,用户注销登录后,这里的用户总人数会及时更新。
第三个字段主要显示系统当前的平均负载指示。上面三个数值,表示系统在过去的一分钟、五分钟、十分钟内的平均负载程度。通常情况下,其值越接近0表示系统的负载月底,性能也比较佳。
笔者提示:
一个有经验的系统工程师可以从以上资料中分析得到很有价值的信息。如当系统管理员发现系统反映异常缓慢时,就可以通过观察上面这个系统当前的平均负载指示。通常情况下管理员可以连续隔五分钟观察一次。如果系统最近五分钟的负载数字比较均衡的话,那么说明没有什么问题。但是如果最近五分钟的负载数字有比较大的差异,如第二次的负载到了10。则及时第三次观测恢复正常了,管理员仍然需要找到到底是什么作业增加了上一个五分钟的系统负载。管理员可以通过系统日志等工具定位到具体的异常程序。很有可能这就是系统异常的罪魁祸首。另外需要注意的是,系统最近1分钟的负载程度并没有太大的参考意义。通常情况下,系统管理员应该关注的是5分钟的平均负载程度参数。并且需要连续观察3-5次。只有如此,才能够得到比较确切的数据。
第二行:8个字段显示用户的详细信息。
第一个字段user,显示当前用户登录采用的用户名。这里要注意,Linux系统跟微软操作系统不同。不同的用户可以利用同一个账户进行登录。故如果这里显示两个相同的帐户名的话,不是什么怪事。
第二个字段为TTY,表示该用户登录的终端代号。这个参数对于管理员来说比较有价值。他可以告诉管理员当前用户是通过什么手段登录到系统的。依照用户登录形式的不同,终端代号也有所不同。其中,TTY1-TTY6分别代表本机上的1到6号的虚拟主控台。PTS表示用户是通过远程登陆的。如果数字为:0则表示用户从XWindow登录系统。如上图所示,就表示当前用户是通过远程访问登陆到Linux操作系统的。
#2楼发布者:lutr时间:2009-03-26 10:37:03
笔者提示:
这个参数对于管理员维护Linux系统安全很有帮助。如管理员怀疑有未经授权的用户在对系统进行非法远程访问。则利用这个命令就可以让用户曝光。而且若跟第三个FROM字段结合使用,还可以知道远程连接用户的IP地址。笔者在日常工作中,这是笔者最关注的几个参数之一。
第三个字段FROM,显示当前用户从什么地方登录到系统。如果这个字段显示的是“—”符号,则表示当前用户是从本机登录的。如果显示的是IP地址或者主机名称,则表示当前用户是远程登陆的。有时会管理员出于系统维护或者其他方面的考虑,会把这个用户强制踢掉。此时管理员就需要知道当前用户所采用的IP地址。那么就可以利用这个命令来获得。
第四个字段Login,表示当前用户登录的时间。注意这里显示的不是当前用户登录系统的持续时间。他是一个时间点,表示用户登录系统的那个时刻。这个参数往往没有多大的参考价价值。
第五个字段为IDEL。他表示用户登录系统后闲置的时间。这个字段是一个时间段,或者说是一个定时器。只要该用户重新开始工作,则这个定时器就会重新计时。
笔者提醒:
这个参数对于管理员维护系统有很大的作用。由于强制中断用户与主机的通信,可能会给用户带来损失。如某个用户可能正在更改某个配置文件。如此此时管理员把这个用户强制中断掉的话,那么这个用户的配置将无法保存。所以笔者在强制中断用户与Linux主机连接的时候,通常会利用这个命令来查看当前用户是否出于空闲状态。如果是出于空闲状态,则就可以毫不犹豫的把这个用户的连接中断调。但是如果不是空闲的话(如空闲时间为0),则管理员在中断之前,需要考虑一些可能会带来的不利后果。除非有特殊的必要,如要发生断电等情况,笔者不建议强制断掉活动用户的连接。
第六个字段JCPU,表示用户所采用的终端所有相关的程序执行时,所消耗的CPU时间。注意此处的时间并非累加,而是每当工作高一段落之后系统就会停止计时。开始新的工作之后这里会重新计时。也就是说,这里指的是应用程序从开始到结束所占用的CPU时间。
第七个字段与第八个字段,要结合起来看。WHAT字段表示当前用户正在做的事情。如果用户正在执行某个程序,则这里会显示用户执行程序的名字。如果用户正在操作的是执行一般文字模式的命令,则这里显示的是用户的环境名称。而PCPU则表示执行WHAT字段内的程序所耗费的时间。
笔者提示:
这第七、八连个字段是这第二行内容中的重点。如当遇到系统突然变得很慢,管理员就可以利用这个命令来查询那些用户一直霸占着CPU不放。其实霸占CPU的不是用户,而是用户所执行的命令。由于这个时间字段不是累计的,当某个程序运行完毕后会重新计时。故当某个用户所采用的程序如果时间过长的话,则可以从一定程度上说明这个程序可能有问题。如果what内容中显示的是PING命令,而PCPU时间又比较长,那管理员就要当心了。很可能这台主机已经成为了别人的肉鸡,在对其他电脑发起PING攻击等等。另外这个命令还可以被用来测试某个命令或者程序的执行效率。从这个CPU的占用时间就可以反映出程序的执行效率。所以这也是管理员进行程序执行效率分析的一个好帮手。
另外管理员需要注意的是,当登录系统的用户比较多时,显示的结果会让人眼花缭乱。此时管理员可能只需要查看一些特定用户的信息。此时管理员可以采用w命令并在后面加上这个用户的帐号即可。如w oracle即可。