问题练习:如何判断一个用户是否登录到了系统?
预先创建一个用户和密码,登录一次,而不是su -,之后运行如下命令:
[root@xiaoke backup]# who | grep hadoop
显示结果: hadoop pts/2 2017-03-09 07:47 (172.16.1.166)
[root@xiaoke backup]# echo $?
显示结果: 0
备注:0表示成功登录过,其他数字代表没有登录过,例如:
[root@xiaoke backup]# who | grep hbase
[root@xiaoke backup]# echo $?
显示结果: 1
1. w
解释: 显示哪个用户登录并且在干什么
帮助: man w
举例: [root@xiaoke ~]# w
显示结果: 08:53:36 up 3:44, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 06:14 2:39m 0.01s 0.01s -bash
root pts/0 192.168.6.1 06:14 2:12m 0.08s 0.01s -bash
root pts/1 192.168.6.10 08:03 0.00s 0.05s 0.00s w
备注: 如果显示终端的窗口过于小会提示XXX column window is too narrow,可以使用w | cat命令
IDLE:空闲时间
2. last
解释: 显示/var/log/wtmp文件,主要显示用户登录历史及系统重启历史
选项: -n #:显示最近#次的相关信息
举例: [root@xiaoke ~]# last -n 3
显示结果: root pts/1 192.168.6.10 Thu Mar 9 08:03 still logged in
hadoop pts/2 172.16.1.166 Thu Mar 9 07:47 - 07:52 (00:04)
root pts/2 172.16.1.166 Thu Mar 9 07:47 - 07:47 (00:00)
wtmp begins Sun Feb 12 18:47:40 2017
3. lastb
解释: 显示/var/log/btmp文件,显示用户错误的登录尝试
选项: -n #:显示最近#次的相关信息
举例: [root@xiaoke ~]# lastb
显示结果: root ssh:notty 192.168.6.10 Thu Mar 9 09:15 - 09:15 (00:00)
root ssh:notty 192.168.6.10 Thu Mar 9 09:15 - 09:15 (00:00)
btmp begins Thu Mar 9 09:15:15 2017
备注: 事先打开其他终端尝试登录,并输错密码,之后再执行上述命令。
注意: 此命令可以看出谁会尝试登录Linux服务器(黑客等)
4. lastlog
解释: 显示每一个用户最近一次的成功登录信息
选项: -u USERNAME:显示特定用户最近的登录信息
举例: [root@xiaoke ~]# lastlog
显示部分结果:
用户名 端口 来自 最后登陆时间
root pts/1 192.168.6.10 四 3月 9 08:03:38 +0800 2017
...
jerry **从未登录过**
hadoop pts/2 172.16.1.166 四 3月 9 07:47:59 +0800 2017
[root@xiaoke ~]# lastlog -u hadoop
显示结果:
用户名 端口 来自 最后登陆时间
hadoop pts/2 172.16.1.166 四 3月 9 07:47:59 +0800 2017
5. basename
解释: 取路径中的最后一个部分
用法: 主要在shell脚本中使用,配合变量$0使用,代表文件名本身,即执行脚本时的脚本路径及名称
举例: [root@xiaoke ~]# basename /etc/sysconfig/network-scripts/
显示结果: network-scripts
shell脚本中往往会引用脚本名称,如果脚本自身名称发生改变就要更改脚本内的名称
这样就比较繁琐,所以在脚本中使用basename $0就可以化繁为简了。
6. mail
解释: 与邮件相关
举例:
[root@xiaoke ~]# mail
显示结果: No mail for root
测试收发电子邮件
[root@xiaoke ~]# cat /etc/fstab | mail -s "How are you ?" root
[root@xiaoke ~]# cat /etc/fstab | mail -s "I LOVE YOU" root
[root@xiaoke ~]# cat /etc/inittab | mail -s "Thank You" root
备注:将/etc/fstab文件内容作为信件正文交给mail命令,-s后面加邮件主题,之后加收件人
[root@xiaoke ~]# mail
显示结果: Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/root": 3 messages 2 new
1 root Thu Mar 9 10:39 33/1343 "How are you ?"
>N 2 root Thu Mar 9 10:54 32/1329 "I LOVE YOU"
N 3 root Thu Mar 9 10:55 43/1407 "Thank You"
&
备注: N:代表新的邮件
U:代表未读邮件(第1次打开后看到的是N,如果没有看而退出,第2次打开是U)
#:代表邮件编号,显示结果中的123
& #:查看第#个邮件内容
& d #:删除第#个邮件
& q:代表退出
另:发邮件还可以用输入重定向
[root@xiaoke ~]# mail -s "Network Card" root < /etc/sysconfig/network-scripts/ifcfg-eth0
[root@xiaoke ~]# mail
显示部分结果: Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/root": 3 messages 1 new 2 unread
>N 3 root Thu Mar 9 11:04 24/645 "Network Card"
&
预先创建一个用户和密码,登录一次,而不是su -,之后运行如下命令:
[root@xiaoke backup]# who | grep hadoop
显示结果: hadoop pts/2 2017-03-09 07:47 (172.16.1.166)
[root@xiaoke backup]# echo $?
显示结果: 0
备注:0表示成功登录过,其他数字代表没有登录过,例如:
[root@xiaoke backup]# who | grep hbase
[root@xiaoke backup]# echo $?
显示结果: 1
1. w
解释: 显示哪个用户登录并且在干什么
帮助: man w
举例: [root@xiaoke ~]# w
显示结果: 08:53:36 up 3:44, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 06:14 2:39m 0.01s 0.01s -bash
root pts/0 192.168.6.1 06:14 2:12m 0.08s 0.01s -bash
root pts/1 192.168.6.10 08:03 0.00s 0.05s 0.00s w
备注: 如果显示终端的窗口过于小会提示XXX column window is too narrow,可以使用w | cat命令
IDLE:空闲时间
2. last
解释: 显示/var/log/wtmp文件,主要显示用户登录历史及系统重启历史
选项: -n #:显示最近#次的相关信息
举例: [root@xiaoke ~]# last -n 3
显示结果: root pts/1 192.168.6.10 Thu Mar 9 08:03 still logged in
hadoop pts/2 172.16.1.166 Thu Mar 9 07:47 - 07:52 (00:04)
root pts/2 172.16.1.166 Thu Mar 9 07:47 - 07:47 (00:00)
wtmp begins Sun Feb 12 18:47:40 2017
3. lastb
解释: 显示/var/log/btmp文件,显示用户错误的登录尝试
选项: -n #:显示最近#次的相关信息
举例: [root@xiaoke ~]# lastb
显示结果: root ssh:notty 192.168.6.10 Thu Mar 9 09:15 - 09:15 (00:00)
root ssh:notty 192.168.6.10 Thu Mar 9 09:15 - 09:15 (00:00)
btmp begins Thu Mar 9 09:15:15 2017
备注: 事先打开其他终端尝试登录,并输错密码,之后再执行上述命令。
注意: 此命令可以看出谁会尝试登录Linux服务器(黑客等)
4. lastlog
解释: 显示每一个用户最近一次的成功登录信息
选项: -u USERNAME:显示特定用户最近的登录信息
举例: [root@xiaoke ~]# lastlog
显示部分结果:
用户名 端口 来自 最后登陆时间
root pts/1 192.168.6.10 四 3月 9 08:03:38 +0800 2017
...
jerry **从未登录过**
hadoop pts/2 172.16.1.166 四 3月 9 07:47:59 +0800 2017
[root@xiaoke ~]# lastlog -u hadoop
显示结果:
用户名 端口 来自 最后登陆时间
hadoop pts/2 172.16.1.166 四 3月 9 07:47:59 +0800 2017
5. basename
解释: 取路径中的最后一个部分
用法: 主要在shell脚本中使用,配合变量$0使用,代表文件名本身,即执行脚本时的脚本路径及名称
举例: [root@xiaoke ~]# basename /etc/sysconfig/network-scripts/
显示结果: network-scripts
shell脚本中往往会引用脚本名称,如果脚本自身名称发生改变就要更改脚本内的名称
这样就比较繁琐,所以在脚本中使用basename $0就可以化繁为简了。
6. mail
解释: 与邮件相关
举例:
[root@xiaoke ~]# mail
显示结果: No mail for root
测试收发电子邮件
[root@xiaoke ~]# cat /etc/fstab | mail -s "How are you ?" root
[root@xiaoke ~]# cat /etc/fstab | mail -s "I LOVE YOU" root
[root@xiaoke ~]# cat /etc/inittab | mail -s "Thank You" root
备注:将/etc/fstab文件内容作为信件正文交给mail命令,-s后面加邮件主题,之后加收件人
[root@xiaoke ~]# mail
显示结果: Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/root": 3 messages 2 new
1 root Thu Mar 9 10:39 33/1343 "How are you ?"
>N 2 root Thu Mar 9 10:54 32/1329 "I LOVE YOU"
N 3 root Thu Mar 9 10:55 43/1407 "Thank You"
&
备注: N:代表新的邮件
U:代表未读邮件(第1次打开后看到的是N,如果没有看而退出,第2次打开是U)
#:代表邮件编号,显示结果中的123
& #:查看第#个邮件内容
& d #:删除第#个邮件
& q:代表退出
另:发邮件还可以用输入重定向
[root@xiaoke ~]# mail -s "Network Card" root < /etc/sysconfig/network-scripts/ifcfg-eth0
[root@xiaoke ~]# mail
显示部分结果: Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/root": 3 messages 1 new 2 unread
>N 3 root Thu Mar 9 11:04 24/645 "Network Card"
&