如何查询一个使用者的相关数据呢?这还不简单,我们之前就提过了 , finger 等指令了,都可以让您了解到一个使用者的相关信息啦!那么想要知道使用者到底啥时候登陆呢? 最简单可以使用 last 检查啊!这个玩意儿我们也在 提过了, 您可以自行前往参考啊!简单的很。

    Tips 早期的 Red Hat 系统的版本中, last 仅会列出当月的登陆者信息,不过在我们的 CentOS 5.x 版以后, last 可以列出从系统创建之后到目前为止的所有登陆者信息!这是因为登录文件轮替的设置不同所致。 详细的说明可以参考后续的第十八章登录文件简介

    那如果你想要知道目前已登陆在系统上面的使用者呢?可以通过 w 或 who 来查询喔!如下范例所示:

    另外,如果您想要知道每个帐号的最近登陆的时间,则可以使用 lastlog 这个指令喔! lastlog 会去读取 /var/log/lastlog 文件,结果将数据输出如下表:

    1. Username Port From Latest
    2. root pts/0 Wed Jul 22 00:26:08 +0800 2015
    3. bin **Never logged in**
    4. ....(中间省略)....
    5. dmtsai pts/1 192.168.1.100 Wed Jul 22 01:08:07 +0800 2015
    6. vbird1 pts/0 Wed Jul 22 01:32:17 +0800 2015
    7. pro3 **Never logged in**
    8. ....(以下省略)....

    这样就能够知道每个帐号的最近登陆的时间啰~ ^_^

    1. [root@study ~]# write 使用者帐号 [使用者所在终端接口]
    2. [root@study ~]# who
    3. vbird1 tty3 2015-07-22 01:55 <==有看到 vbird1 在线上
    4. root tty4 2015-07-22 01:56
    5. Hello, there:
    6. # 结束时,请按下 [crtl]-d 来结束输入。此时在 vbird1 的画面中,会出现:
    7. Message from root@study.centos.vbird on tty4 at 01:57 ...
    8. Hello, there:
    9. Please don't do anything wrong...
    10. EOF

    怪怪~立刻会有讯息回应给 vbird1 !不过……当时 vbird1 正在查数据,哇! 这些讯息会立刻打断 vbird1 原本的工作喔!所以,如果 vbird1 这个人不想要接受任何讯息,直接下达这个动作:

    不过,这个 mesg 的功能对 root 传送来的讯息没有抵挡的能力!所以如果是 root 传送讯息, vbird1 还是得要收下。 但是如果 root 的 mesg 是 n 的,那么 vbird1 写给 root 的信息会变这样:

    1. [vbird1@study ~]$ write root
    2. write: root has messages disabled

    了解乎?如果想要解开的话,再次下达“ mesg y ”就好啦!想要知道目前的 mesg 状态,直接下达“ mesg ”即可!瞭呼? 相对于 write 是仅针对一个使用者来传“简讯”,我们还可以“对所有系统上面的使用者传送简讯 (广播)”哩~ 如何下达?用 wall 即可啊!他的语法也是很简单的喔!

    1. [root@study ~]# wall "I will shutdown my linux server..."

    然后你就会发现所有的人都会收到这个简讯呢!连发送者自己也会收到耶!

    使用 wall, write 毕竟要等到使用者在线上才能够进行,有没有其他方式来联络啊? 不是说每个 Linux 主机上面的使用者都具有一个 mailbox 吗? 我们可否寄信给使用者啊!呵呵!当然可以啊!我们可以寄、收 mailbox 内的信件呢! 一般来说, mailbox 都会放置在 /var/spool/mail 里面,一个帐号一个 mailbox (文件)。 举例来说,我的 vbird1 就具有 /var/spool/mail/vbird1 这个 mailbox 喔!

    那么我该如何寄出信件呢?就直接使用 mail 这个指令即可!这个指令的用法很简单的,直接这样下达:“ mail -s "邮件标题" username ”即可! 一般来说,如果是寄给本机上的使用者,基本上,连“ @localhost ”都不用写啦! 举例来说,我以 root 寄信给 vbird1 ,信件标题是“ nice to meet you ”,则:

    例题:请将你的主文件夹下的环境变量文件 (~/.bashrc) 寄给自己!答:mail -s "bashrc file content" dmtsai < ~/.bashrc例题:通过管线命令直接将 ls -al ~ 的内容传给 root 自己!答:ls -al ~ | mail -s "myfile" root

    刚刚上面提到的是关于“寄信”的问题,那么如果是要收信呢?呵呵!同样的使用 mail 啊! 假设我以 vbird1 的身份登陆主机,然后输入 mail 后,会得到什么?

    1. [vbird1@study ~]$ mail
    2. Heirloom Mail version 12.5 7/5/10\. Type ? for help.
    3. "/var/spool/mail/vbird1": 1 message 1 new
    4. &gt;N 1 root Wed Jul 22 02:09 20/671 "nice to meet you"
    5. & &lt;==这里可以输入很多的指令,如果要查阅,输入 ? 即可!

    在 mail 当中的提示字符是 & 符号喔,别搞错了~输入 mail 之后,我可以看到我有一封信件, 这封信件的前面那个 > 代表目前处理的信件,而在大于符号的右边那个 N 代表该封信件尚未读过, 如果我想要知道这个 mail 内部的指令有哪些,可以在 & 之后输入“ ? ”,就可以看到如下的画面:

    1. & ?
    2. mail commands
    3. next goto and type next message
    4. from &lt;message list&gt; give head lines of messages
    5. headers print out active message headers
    6. delete &lt;message list&gt; delete messages
    7. undelete &lt;message list&gt; undelete messages
    8. save &lt;message list&gt; folder append messages to folder and mark as saved
    9. copy &lt;message list&gt; folder append messages to folder without marking them
    10. write &lt;message list&gt; file append message texts to file, save attachments
    11. preserve &lt;message list&gt; keep incoming messages in mailbox even if saved
    12. Reply &lt;message list&gt; reply to message senders
    13. reply &lt;message list&gt; reply to message senders and all recipients
    14. mail addresses mail to specific recipients
    15. file folder change to another folder
    16. quit quit and apply changes to folder
    17. xit quit and discard changes made to folder
    18. ! shell escape
    19. list list names of all available commands

    <message list> 指的是每封邮件的左边那个数字啦!而几个比较常见的指令是:

    旧版的 CentOS 在使用 mail 读信后,通过 q 离开始,会将已读信件移动到 ~/mbox 中,不过目前 CentOS 7 已经不这么做了! 所以离开 mail 可以轻松愉快的使用 q 了呢!