如果说我想看看系统中现在有哪些用户在登陆,而且还要和系统中某个用户进行交流的话,我怎么做呢?这就是我们今天的学习内容。
我们前面讲到过id和finger命令可以查看到用户的一些相关信息,下面我们再来看几个和用户信息相关的命令。

w, who, last, lastlog

w就是显示用户的用户,并显示出用户正在干什么。

[root@yufei ~]# w
22:54:24 up 44 min,  2 users,  load average: 0.00, 0.03, 0.02
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.6.1      22:13    0.00s  0.09s  0.00s w
yufei    tty1     :0               22:44     ?     2.01s  0.11s pam: gdm-password
第一行:系统目前的时间,启动的时间,用多少个用户在线,用户的负载情况
第二行:项目说明,用户名、登陆终端、从什么地方登陆的、登陆的时间、负载情况、用户正在进行的操作
第三行以下,都是和第二行的内容解释一样。

who 显示哪些用户登陆了系统

想看所有的参数,直接用-a或者是–alla参数
[root@yufei ~]# who -all
           system boot  2011-01-13 22:10
           run-level 5  2011-01-13 22:10
LOGIN      tty2         2011-01-13 22:10              1876 id=2
LOGIN      tty3         2011-01-13 22:10              1878 id=3
LOGIN      tty4         2011-01-13 22:10              1880 id=4
LOGIN      tty6         2011-01-13 22:10              1888 id=6
LOGIN      tty5         2011-01-13 22:10              1884 id=5
root     + pts/0        2011-01-13 22:13   .          2073 (192.168.6.1)
yufei    – tty1         2011-01-13 22:44  old         2049 (:0)
           pts/1        2011-01-13 22:50                 0 id=/1    term=0 exit=0

这个显示了系统的启动时间,运行的等级,开启的终端(tty1~6),用户的登陆地,进程号等等信息,具体的参数,自己看帮助吧。

last与lastlog

last 查看最后登陆系统的用户
lastlog 查看系统中用户登陆系统的情况
[root@yufei ~]# last
yufei    tty1         :0               Fri Jan 14 21:18   still logged in  
root     pts/0        192.168.6.1      Fri Jan 14 21:18   still logged in  
reboot   system boot  2.6.32-71.el6.i6 Fri Jan 14 21:07 – 21:22  (00:14) 

在最上面,你会发现这样的信息,这就可以查看到最后登陆系统的用户,而且还有用户的登陆状态。包括系统启动的时间和用户登陆系统的时间。
[root@yufei ~]# lastlog -u root;lastlog -u yufei
Username         Port     From             Latest
root             pts/0    192.168.6.1      Fri Jan 14 21:18:05 +0800 2011
Username         Port     From             Latest
yufei                                      **Never logged in**

这里我们过滤了root和yufei这两个用户的登陆情况,你也可以直接用lastlog查看系统中所有用户的登陆情况,但大家会发现一个问题,yufei这个用户,后面显示的是 **Never logged in**,这也是我想不明白的地方,不知道是哪里的问题?通过last查看来用户yufei还在登陆中,但在lastlog中却是**Never logged in**,郁闷了,重新启动还是一样的问题,恢复到最初的安装状态也是这样的结果。如果有朋友知道原因的话,请与我联系,感谢!
OK,知道了如何查看用户,那么如何给在线的用户发信息呢?如何给不在线的用户留言呢?下面我们就来看看些问题的解决。

write, wall,以及信息收取的开关mesg

write 和在线的用户交流信息

下面就看看他的具体用法
SYNOPSIS
       write user [ttyname]
这个用法很简单,后面接用户再接终端
看例子
[root@yufei ~]# who
root     pts/0        2011-01-14 21:18 (192.168.6.1)
yufei    tty1         2011-01-14 21:18 (:0)
root     pts/1        2011-01-14 21:58 (192.168.6.1)
yufei    pts/2        2011-01-14 22:02 (:0.0)

用who查看到系统目前的除了root外还有一个yufei,那么我们给yufei发条信息。
[root@yufei ~]# write yufei pts/2
这时候会等待输入信息,输入下面的信息,最后用ctrl+d来结束输入
hello
nice to meet you

这时候yufei这个用户在终端(Terminal)上就能收到信息了(基本上是同时出现),如图
注意:因为yufei现在在两个终端上,一个是tty1,一个是pts/2。为什么会这样呢?是因为我在登陆系统的时候,是图形界面,先用yufei这个用户登陆了系统,然后在系统上打开了一个终端(Terminal)。系统登陆的时候是tty1,而打开的Terminal就是pts/2。如果你给tty1上的yufei发信息,他是看不到了,只有给pts/2上的yufei发信息才能看到。这里需要理解一下(其实很简单,可以这样理解,登陆了X桌面后,没有提供接收信息的工具,只是在X环境下而已)。不知道我说的清楚了没有,希望大家能明白,不能明白的,请留言。
上面root用户发给yufei的信息,无论yufei当时在干吗,发来的信息都会打断他的当前工具,所以说,就有了下面这个mesg命令来控制是否接收别人发来的信息。但是注意一点,root发来的信息,是拒绝不掉的。

如何来查询当前的接收状态呢?

直接用mesg就能查看,一个是y,一个是n
[yufei@yufei ~]$ mesg
is y

设置也很简单,mesg后面加上开关
[yufei@yufei ~]$ mesg n
is n

注:这个设置,一定要是用户的第一环境(登陆环境),如果说是通过su方式切换的话,是没有权限来更改的。
设置完后,除了root用户发个yufei发信息外,其他用户发来的信息,yufei是收不到的。
这个对单个用户发信息,如果是对所有在线的发信息的话,那如何来发呢?哈哈,这个更简单,直接用wall

[root@yufei ~]# wall “I will shutdown this system! “
这时候所有在线的用户都会收到这条信息。
注:在上面的信息内容中,最后的!与”之间需要有个空格,这是因为SHELL的语法中会有!,所以要注意一下。一般情况下,命令后面如果是一长串的内容的话,我们都会用”"来把他们包括起来。

给离线的用户发信息

上面讲的都是给在线的用户发信息,那么如何给离线的用户发信息呢?那就是我们平时用到最多的邮件。我们还记得在讲用户和组的时候,有个用户的邮箱吗?对了,这是这个/var/spool/mail/下面的用户邮箱。
因为这个mail参数很多,我们也不需要来研究太深入,在服务器搭建的课程中,我们还会有这个邮件服务器的搭建讲解,所以,我们这里面只是来简单的了解一下。
发邮件的格式如下(RHEL6中)
[root@yufei ~]# mail yufei
Subject: test send mail
上面输入邮件的标题,下面输入邮件的内容
hello,yufei
nice to meet you!
.
最后以.来结尾
EOT

这时候,发给yufei的邮件就完成了,我们换成yufei的身份来查看一下。
[root@yufei ~]# su – yufei
[yufei@yufei ~]$ mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
“/var/spool/mail/yufei”: 1 message 1 new
>N  1 root                  Fri Jan 14 23:08  19/603   “test send mail”
&

这时候我们输入1就能看到邮件的具体内容了,
Message  1:
From root@yufei.opsers.org  Fri Jan 14 23:08:09 2011
Return-Path: <root@yufei.opsers.org>
X-Original-To: yufei
Delivered-To: yufei@yufei.opsers.org
Date: Fri, 14 Jan 2011 23:08:09 +0800
To: yufei@yufei.opsers.org
Subject: test send mail
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@yufei.opsers.org (root)
Status: R

上面的邮件内容已经清晰的显示出来了,
想看更多的命令,在& 后面输入help
& quit
Held 1 message in /var/spool/mail/yufei
You have mail in /var/spool/mail/yufei

这就退出来了,如果还想看的话,还是用mail来查看,如果不想再要这封邮件的话,那么可以用delete 1来删除邮件。
hello,yufei
nice to meet you!
&
到此,关于用户和用户组的内容就全部讲完了,有什么问题的话,请各位网友与我留言,我们一起探讨学习!