• Linux学习-Linux 主机上的用户讯息传递


    查询使用者: w, who, last, lastlog

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

    [root@study ~]# w
    01:49:18 up 25 days, 3:34, 3 users, load average: 0.00, 0.01, 0.05
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    dmtsai tty2 07Jul15 12days 0.03s 0.03s -bash
    dmtsai pts/0 172.16.200.254 00:18 6.00s 0.31s 0.11s sshd: dmtsai [priv] # 第一行显示目前的时间、开机 (up) 多久,几个用户在系统上平均负载等;
    # 第二行只是各个项目的说明,
    # 第三行以后,每行代表一个使用者。如上所示,dmtsai 登入并取得终端机名 tty2 之意。
    
    [root@study ~]# who
    dmtsai   tty2         2015-07-07 23:07
    dmtsai   pts/0        2015-07-22 00:18 (192.168.1.100)
    

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

    [root@study ~]# lastlog
    Username         Port     From             Latest
    root             pts/0                     Wed Jul 22 00:26:08 +0800 2015
    bin                                        **Never logged in**
    ....(中间省略)....
    dmtsai           pts/1    192.168.1.100    Wed Jul 22 01:08:07 +0800 2015
    vbird1           pts/0                     Wed Jul 22 01:32:17 +0800 2015
    pro3                                       **Never logged in**
    ....(以下省略)....
    

    使用者对谈: write, mesg, wall

    是否可以跟系统上面的用户谈天说地呢?当然可以啦!利用 write 这个指令即可。 write 可 以直接将讯息传给接收者啰!举例来说,我们的 Linux 目前有 vbird1 与 root 两个人在在线, 我 的 root 要跟 vbird1 讲话,可以这样做:

    [root@study ~]# write 使用者账号 [用户所在终端接口]
    
    [root@study ~]# who
    vbird1 tty3 2015-07-22 01:55 <==有看到 vbird1 在在线 
    root tty4 2015-07-22 01:56
    
    [root@study ~]# write vbird1 pts/2
    Hello, there:
    Please don't do anything wrong... <==这两行是 root 写的信息!
    # 结束时,请按下 [crtl]-d 来结束输入。此时在 vbird1 的画面中,会出现:
    
    Message from root@study.centos.vbird on tty4 at 01:57 ... Hello, there:
    Please don't do anything wrong...
    EOF
    

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

    [vbird1@study ~]$ mesg n
    [vbird1@study ~]$ mesg
    is n
    

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

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

    相对于 write 是仅针对一个使用者来传『简讯』,我们还可以『对所有系 统上面的用户传送简讯 (广播)』哩~ 如何下达?用 wall 即可

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

    使用者邮件信箱: mail

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

    [root@study ~]# mail -s "nice to meet you" vbird1 Hello, D.M. Tsai
    Nice to meet you in the network.
    You are so nice. byebye!
    . <==这里很重要喔,结束时,最后一行输入小数点 . 即可! 
    EOT
    [root@study ~]# <==出现提示字符,表示输入完毕了!
    

    如此一来,你就已经寄出一封信给 vbird1 这位使用者啰,而且,该信件标题为: nice to meet you, 信件内容就如同上面提到的。不过,你或许会觉得 mail 这个程序不好用~ 因为在信件编写的过程 中,如果写错字而按下 Enter 进入次行,前一行的数据很难删除ㄟ! 那怎么办?没关系啦!我们使 用数据流重导向啊!呵呵!利用那个小于的符号 ( < ) 就可以达到取代键盘输入的要求了。也就是说, 你可以先用 vi 将信件内容编好, 然后再以 mail -s "nice to meet you" vbird1 < filename 来将文件内 容传输即可。

    如果是要收信呢?呵呵!同样的使用 mail 啊! 假设 我以 vbird1 的身份登入主机,然后输入 mail 后,

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

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

    & ?
                   mail commands
    type <message list>             type messages
    next                            goto and type next message
    from <message list>             give head lines of messages
    headers                         print out active message headers
    delete <message list>           delete messages
    undelete <message list>         undelete messages
    save <message list> folder      append messages to folder and mark as saved
    copy <message list> folder      append messages to folder without marking them
    write <message list> file       append message texts to file, save attachments
    preserve <message list>         keep incoming messages in mailbox even if saved
    Reply <message list>            reply to message senders
    reply <message list>            reply to message senders and all recipients
    mail addresses                  mail to specific recipients
    file folder                     change to another folder
    quit                            quit and apply changes to folder
    xit                             quit and discard changes made to folder
    !                               shell escape
    cd <directory>                  chdir to directory or home if none given
    list                            list names of all available commands
    

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

    指令 意义
    h 列出信件标头;如果要查阅 40 封信件左右的信件标头,可以输入『 h 40 』
    d 删除后续接的信件号码,删除单封是『 d10 』,删除 20~40 封则为『 d20-40 』。 不过,这个动作要生效 的话,必须要配合 q 这个指令才行(参考底下说明)!
    s 将信件储存成文件。例如我要将第 5 封信件的内容存成 ~/mail.file:『s 5 ~/mail.file』
    x 或者输入 exit 都可以。这个是『不作任何动作离开 mail 程序』的意思。 不论你刚刚删除了什么信件, 或者读过什么,使用 exit 都会直接离开 mail,所以刚刚进行的删除与阅读工作都会无效。 如果您只是查 阅一下邮件而已的话,一般来说,建议使用这个离开啦!除非你真的要删除某些信件。
    q 相对于 exit 是不动作离开, q 则会实际进行你刚刚所执行的任何动作 (尤其是删除!)
  • 相关阅读:
    GNU计划的起因及其现状
    【KVM新概念】 虚拟机CPU热拔插
    Amazon vs Google 云服务
    【笨木头Cocos2dx 039】战争迷雾效果 第02章_先把地图加进来
    【C++11】新特性——auto的使用
    Netty4 SEDA 事件驱动原理分析
    error ,exception
    Compiling Java with makefile
    (二)Centos7下Yum更新安装PHP5.5,5.6,7.0
    CentOS7.0下安装FTP服务的方法
  • 原文地址:https://www.cnblogs.com/uetucci/p/7677356.html
Copyright © 2020-2023  润新知