5 种方法查看当前系统登录的用户信息

640?wx_fmt=gif

点击上方“杰哥的IT之旅”,选择“置顶公众号”

干货、福利第一时间送达!

640?

640?wx_fmt=jpeg

在工作中,每当用户登录系统时,程序都要在 lastlog 文件中搜索要登录用户的 UID 号,如果查询到了,则将该用户的上次登录时间、退出时间、主机名等信息进行输出,然后将本次最新的登录时间记录在 lastlog 文件中。当用户登录成功后,登录程序还要在 utmp 文件中插入该用户的登录信息,该信息并且一直保存到用户退出为止。

作为系统管理员的我们,不管在什么时候当需要查看系统中有哪些用户在操作些什么时,我们将采用今天我所跟大家分享的话题:5 种方法查看当前系统登录的用户信息及相关用法和基本介绍。

使用 w 命令


w 命令查看 utmp 文件并显示当前系统中每个用户和它所运行的进程,以及这些进程占用 CPU 的时间信息。

-u :显示结果的加载时间;

执行结果如下:

  • USER:用户名称

  • TTY:用户设备的名称或 TTY 号

  • FROM:远程主机地址

  • LOGIN@:用户登录系统的时间

  • IDLE:空闲时间

  • JCPU:附加到 TTY 终端的进程所用的时间

  • PCPU:当前进程所用时间

  • WHAT:用户当前正在使用的命令

[root@localhost ~]# w -u
 16:30:00 up 2 days, 23:45, 4 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty7 :0 Mon17 1088days 14.76s 14.76s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-F08L6U/database -nolisten tcp
root pts/0 :0.0 02:28 2:06m 0.23s 0.23s /bin/bash
root pts/1 192.168.1.119 14:24 0.00s 0.17s 0.06s w
root tty1 - Mon17 22:53m 0.03s 0.03s -bash

-h :忽略头文件信息;

[root@localhost ~]# w -h
root tty7 :0 Mon17 1088days 14.76s 14.76s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-F08L6U/database -nolisten tcp
root pts/0 :0.0 02:28 2:07m 0.23s 0.23s /bin/bash
root pts/1 192.168.1.119 14:24 0.00s 0.11s 0.00s w -h
root tty1 - Mon17 22:54m 0.03s 0.03s -bash

-s :不显示 JCPU、PCPU、登录时间;

[root@localhost ~]# w -s
 16:33:21 up 2 days, 23:49, 4 users, load average: 0.00, 0.00, 0.00
USER TTY FROM IDLE WHAT
root tty7 :0 1088days /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-F08L6U/database -nolisten tcp
root pts/0 :0.0 2:09m /bin/bash
root pts/1 192.168.1.119 0.00s w -s
root tty1 - 22:57m -bash

-f :表示开启或关闭显示用户从何处登入系统;

[root@localhost ~]# w -f
 23:37:48 up 3 days, 6:53, 5 users, load average: 0.00, 0.00, 0.00
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root tty7 Mon17 1088days 19.45s 19.45s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-F08L6U/database -nolisten tcp
root pts/0 02:28 1:26m 0.35s 0.35s /bin/bash
root pts/1 22:11 1.00s 0.66s 0.59s w -f
root pts/2 21:27 1:39m 0.16s 0.08s bash
root tty1 Mon17 30:01m 0.03s 0.03s -bash

-l :表示使用详细格式列表,此为预设值;

[root@localhost ~]# w -l
 23:39:00 up 3 days, 6:54, 5 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty7 :0 Mon17 1088days 19.45s 19.45s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-F08L6U/database -nolisten tcp
root pts/0 :0.0 02:28 1:28m 0.35s 0.35s /bin/bash
root pts/1 192.168.1.3 22:11 1.00s 0.10s 0.01s w -l
root pts/2 192.168.1.3 21:27 1:40m 0.16s 0.08s bash
root tty1 - Mon17 30:02m 0.03s 0.03s -bash

使用 who 命令


who 命令用于列出当前已登录系统的用户名称。

不加任何参数显示出的结果如下:

  • 第一列:用户名;

  • 第二列:终端名;

  • 第三列:登录时间,且括号里面的内容表示是从哪台主机登录的;

[root@localhost ~]# who
root tty7 2019-05-27 17:36 (:0)
root pts/0 2019-05-28 02:28 (:0.0)
root pts/1 2019-05-28 14:24 (192.168.1.119)
root tty1 2019-05-27 17:36

-H :显示各栏的标题信息列;

[root@localhost ~]# who -H
名称 线路 时间 备注
root tty7 2019-05-27 17:36 (:0)
root pts/0 2019-05-28 02:28 (:0.0)
root pts/1 2019-05-28 14:24 (192.168.1.119)
root pts/2 2019-05-28 21:27 (192.168.1.3)
root tty1 2019-05-27 17:36

-u :显示闲置时间,若该用户在前一分钟之内有进行任何动作,将显示 "." 号,若该用户已超过 24 小时且没有任何动作,则显示 "old" 或者  "旧的" 字符串;


[root@localhost ~]# who -u
root tty7 2019-05-27 17:36 旧的 32021 (:0)
root pts/0 2019-05-28 02:28 00:30 33758 (:0.0)
root pts/1 2019-05-28 14:24 03:29 36188 (192.168.1.119)
root pts/2 2019-05-28 21:27 . 37350 (192.168.1.3)
root tty1 2019-05-27 17:36 旧的 31831


-m :效果和指定 "am i" 字符串相同;

[root@localhost ~]# who -m
root pts/2 2019-05-28 21:27 (192.168.1.3)

-q :只显示登入系统的账号名称和用户数;

[root@localhost ~]# who -q
root root root root root
# 用户数=5

-w :显示用户的信息状态栏;

[root@localhost ~]# who -w
root + tty7 2019-05-27 17:36 (:0)
root + pts/0 2019-05-28 02:28 (:0.0)
root + pts/1 2019-05-28 14:24 (192.168.1.119)
root + pts/2 2019-05-28 21:27 (192.168.1.3)
root + tty1 2019-05-27 17:36

使用 whoami 命令


whoami 命令用于显示登入的用户名;

[root@localhost ~]# whoami
root

当然了,除了上述操作以外,还可以执行如下两条命令来显示当前登入的用户名称,以及当前所使用的 TTY 信息。

[root@localhost ~]# id -un root
root
[root@localhost ~]# who am i 
root pts/2 2019-05-28 21:27 (192.168.1.3)

使用 last 命令


last 命令用于显示用户最近登录信息。如果没有指定任何参数,则显示所有用户的历史信息。在默认情况下,这些所显示的信息将来源于 /var/log/wtmp 文件。


输出的结果:


  • 第一列:用户名

  • 第二列:终端名

  • 第三列:客户端的 IP 地址

  • 第四列:登录和退出的时间,括号中的数值表示为:持续登录的时间;still logged in:表示该用户仍然在线。

[root@localhost ~]# last
root pts/1 192.168.1.119 Tue May 28 14:24 still logged in 
root pts/3 192.168.1.6 Tue May 28 12:04 - 14:12 (02:07) 
root pts/2 administrator Tue May 28 11:03 - 13:40 (02:37)
(其他显示结果省略)

-R :省略 hostname 的信息;

[root@localhost ~]# last -R
root pts/2 Tue May 28 21:27 still logged in 
root pts/1 Tue May 28 14:24 still logged in 
root pts/3 Tue May 28 12:04 - 14:12 (02:07) 
root pts/2 Tue May 28 11:03 - 13:40 (02:37) 
root pts/1 Tue May 28 08:59 - 13:12 (04:13) 
root pts/2 Tue May 28 05:00 - 08:59 (03:59) 
root pts/1 Tue May 28 02:28 - 07:10 (04:41)

-num 参数:将展示前 num 个,该 num 数值可改,执行命令 last -R -3 和 last -n 3 -R 输出的结果是一致的;

[root@localhost ~]# last -3
root pts/2 192.168.1.3 Tue May 28 21:27 still logged in 
root pts/1 192.168.1.119 Tue May 28 14:24 still logged in 
root pts/3 192.168.1.6 Tue May 28 12:04 - 14:12 (02:07) 

wtmp begins Sat Jun 4 06:40:32 2016

[root@localhost ~]# last -R -3
[root@localhost ~]# last -n 3 -R
root pts/2 Tue May 28 21:27 still logged in 
root pts/1 Tue May 28 14:24 still logged in 
root pts/3 Tue May 28 12:04 - 14:12 (02:07) 

wtmp begins Sat Jun 4 06:40:32 2016

显示最后一列主机 IP 地址;

[root@localhost ~]# last -n 5 -a -i
root pts/2 Tue May 28 21:27 still logged in 192.168.1.3
root pts/1 Tue May 28 14:24 still logged in 192.168.1.119
root pts/3 Tue May 28 12:04 - 14:12 (02:07) 192.168.1.6
root pts/2 Tue May 28 11:03 - 13:40 (02:37) 192.168.1.6
root pts/1 Tue May 28 08:59 - 13:12 (04:13) 192.168.1.126

wtmp begins Sat Jun 4 06:40:32 2016
You have new mail in /var/spool/mail/root

如果只查询某个用户的信息,可执行如下命令,且 -2 的意思为 num 只输出前两行的结果,如查看更多可执行命令 last root 即可;

[root@localhost ~]# last root -2
root pts/1 192.168.1.3 Tue May 28 22:11 still logged in 
root pts/2 192.168.1.3 Tue May 28 21:27 still logged in 

wtmp begins Sat Jun 4 06:40:32 2016

使用 lastlog 命令


lastlog 命令用于查看系统中每个用户最后的登录时间;

[root@localhost ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/1 192.168.1.119 二 5月 28 14:24:05 +0800 2019
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
(其他显示结果省略)

-u :后面加用户名,则输出指定登录的最后一条记录;

[root@localhost ~]# lastlog -u root
用户名 端口 来自 最后登陆时间
root pts/1 192.168.1.3 二 5月 28 22:11:07 +0800 2019

-t :后面加 DAYS NUM 则输出最近几天的记录;

[root@localhost ~]# lastlog -t 3

640

往期精彩

1、【纯干货】Linux 下各文件夹的结构说明及用途介绍

2、廖雪峰历时3个月打磨出价值1980数据分析教程,终终终于免费啦!!!

3、10 个小技巧助你快速成为 Linux 高手!

4、Linux 环境下安装 Nexus 私服存储库

5、详解 Linux 环境下防毒软件 ClamAV

6、Linux 环境下安装 GitLab 与配置

7、Linux运维学习路线,实用Linux教程,推荐学习收藏

8、玩转 Linux 环境下日期的语法

640?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值