查看: 949| 回复: 0
跳转到指定楼层
上一主题 下一主题
收起左侧

[学Java/C#] 5 种方法查看当前系统登录的用户信息

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
前言
在工作中,每当用户登录系统时,程序都要在 lastlog 文件中搜索要登录用户的 UID 号,如果查询到了,则将该用户的上次登录时间、退出时间、主机名等信息进行输出,然后将本次最新的登录时间记录在 lastlog 文件中。当用户登录成功后,登录程序还要在 utmp 文件中插入该用户的登录信息,该信息并且一直保存到用户退出为止。
作为系统管理员的我们,不管在什么时候当需要查看系统中有哪些用户在操作些什么时,我们将采用今天我所跟大家分享的话题:5 种方法查看当前系统登录的用户信息及相关用法和基本介绍

一、使用 w 命令
w 命令查看 utmp 文件并显示当前系统中每个用户和它所运行的进程,以及这些进程占用 CPU 的时间信息。
-u :显示结果的加载时间
执行结果如下:

USER:用户名称
TTY:用户设备的名称或 TTY 号
FROM:远程主机地址
LOGIN@:用户登录系统的时间
IDLE:空闲时间
JCPU:附加到 TTY 终端的进程所用的时间
PCPU:当前进程所用时间
WHAT:用户当前正在使用的命
  1. [root@localhost ~]# w -u
  2. 16:30:00 up 2 days, 23:45, 4 users, load average: 0.00, 0.00, 0.00
  3. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  4. 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
  5. root pts/0 :0.0 02:28 2:06m 0.23s 0.23s /bin/bash
  6. root pts/1 192.168.1.119 14:24 0.00s 0.17s 0.06s w
  7. root tty1 - Mon17 22:53m 0.03s 0.03s -bash
复制代码



-h :忽略头文件信息
  1. [root@localhost ~]# w -h
  2. 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
  3. root pts/0 :0.0 02:28 2:07m 0.23s 0.23s /bin/bash
  4. root pts/1 192.168.1.119 14:24 0.00s 0.11s 0.00s w -h
  5. root tty1 - Mon17 22:54m 0.03s 0.03s -bash
复制代码



-s :不显示 JCPU、PCPU、登录时间
  1. [root@localhost ~]# w -s
  2. 16:33:21 up 2 days, 23:49, 4 users, load average: 0.00, 0.00, 0.00
  3. USER TTY FROM IDLE WHAT
  4. root tty7 :0 1088days /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-F08L6U/database -nolisten tcp
  5. root pts/0 :0.0 2:09m /bin/bash
  6. root pts/1 192.168.1.119 0.00s w -s
  7. root tty1 - 22:57m -bash
复制代码



-f :表示开启或关闭显示用户从何处登入系统
  1. [root@localhost ~]# w -f
  2. 23:37:48 up 3 days, 6:53, 5 users, load average: 0.00, 0.00, 0.00
  3. USER TTY LOGIN@ IDLE JCPU PCPU WHAT
  4. 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
  5. root pts/0 02:28 1:26m 0.35s 0.35s /bin/bash
  6. root pts/1 22:11 1.00s 0.66s 0.59s w -f
  7. root pts/2 21:27 1:39m 0.16s 0.08s bash
  8. root tty1 Mon17 30:01m 0.03s 0.03s -bash
复制代码



-l :表示使用详细格式列表,此为预设值
  1. [root@localhost ~]# w -l
  2. 23:39:00 up 3 days, 6:54, 5 users, load average: 0.00, 0.00, 0.00
  3. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  4. 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
  5. root pts/0 :0.0 02:28 1:28m 0.35s 0.35s /bin/bash
  6. root pts/1 192.168.1.3 22:11 1.00s 0.10s 0.01s w -l
  7. root pts/2 192.168.1.3 21:27 1:40m 0.16s 0.08s bash
  8. root tty1 - Mon17 30:02m 0.03s 0.03s -bash
复制代码





二、使用 who 命令
who 命令用于列出当前已登录系统的用户名称
不加任何参数显示出的结果如下:
第一列:用户名;
第二列:终端名;
第三列:登录时间,且括号里面的内容表示是从哪台主机登录的;
  1. [root@localhost ~]# who
  2. root tty7 2019-05-27 17:36 (:0)
  3. root pts/0 2019-05-28 02:28 (:0.0)
  4. root pts/1 2019-05-28 14:24 (192.168.1.119)
  5. root tty1 2019-05-27 17:36
复制代码



-H :显示各栏的标题信息列
  1. [root@localhost ~]# who -H
  2. 名称 线路 时间 备注
  3. root tty7 2019-05-27 17:36 (:0)
  4. root pts/0 2019-05-28 02:28 (:0.0)
  5. root pts/1 2019-05-28 14:24 (192.168.1.119)
  6. root pts/2 2019-05-28 21:27 (192.168.1.3)
  7. root tty1 2019-05-27 17:36
复制代码



-u :显示闲置时间,若该用户在前一分钟之内有进行任何动作,将显示 "." 号,若该用户已超过 24 小时且没有任何动作,则显示 "old" 或者  "旧的" 字符串;
  1. [root@localhost ~]# who -u
  2. root tty7 2019-05-27 17:36 旧的 32021 (:0)
  3. root pts/0 2019-05-28 02:28 00:30 33758 (:0.0)
  4. root pts/1 2019-05-28 14:24 03:29 36188 (192.168.1.119)
  5. root pts/2 2019-05-28 21:27 . 37350 (192.168.1.3)
  6. root tty1 2019-05-27 17:36 旧的 31831
复制代码



-m :效果和指定 "am i" 字符串相同
  1. [root@localhost ~]# who -m
  2. root pts/2 2019-05-28 21:27 (192.168.1.3)
复制代码



-q :只显示登入系统的账号名称和用户数
  1. [root@localhost ~]# who -q
  2. root root root root root
  3. # 用户数=5
复制代码



-w :显示用户的信息状态栏
  1. [root@localhost ~]# who -w
  2. root + tty7 2019-05-27 17:36 (:0)
  3. root + pts/0 2019-05-28 02:28 (:0.0)
  4. root + pts/1 2019-05-28 14:24 (192.168.1.119)
  5. root + pts/2 2019-05-28 21:27 (192.168.1.3)
  6. root + tty1 2019-05-27 17:36
复制代码






三、使用 whoami 命令
whoami 命令用于显示登入的用户名
  1. [root@localhost ~]# whoami
  2. root
复制代码



当然了,除了上述操作以外,还可以执行如下两条命令来显示当前登入的用户名称,以及当前所使用的 TTY 信息。
  1. [root@localhost ~]# id -un root
  2. root
  3. [root@localhost ~]# who am i
  4. root pts/2 2019-05-28 21:27 (192.168.1.3)
复制代码



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

第一列:用户名
第二列:终端名
第三列:客户端的 IP 地址
第四列:登录和退出的时间,括号中的数值表示为:持续登录的时间;still logged in:表示该用户仍然在线
  1. [root@localhost ~]# last
  2. root pts/1 192.168.1.119 Tue May 28 14:24 still logged in
  3. root pts/3 192.168.1.6 Tue May 28 12:04 - 14:12 (02:07)
  4. root pts/2 administrator Tue May 28 11:03 - 13:40 (02:37)
  5. (其他显示结果省略)
复制代码



-R :省略 hostname 的信息
  1. [root@localhost ~]# last -R
  2. root pts/2 Tue May 28 21:27 still logged in
  3. root pts/1 Tue May 28 14:24 still logged in
  4. root pts/3 Tue May 28 12:04 - 14:12 (02:07)
  5. root pts/2 Tue May 28 11:03 - 13:40 (02:37)
  6. root pts/1 Tue May 28 08:59 - 13:12 (04:13)
  7. root pts/2 Tue May 28 05:00 - 08:59 (03:59)
  8. root pts/1 Tue May 28 02:28 - 07:10 (04:41)
复制代码



-num 参数:将展示前 num 个,该 num 数值可改,执行命令 last -R -3 和 last -n 3 -R 输出的结果是一致的
  1. [root@localhost ~]# last -3
  2. root pts/2 192.168.1.3 Tue May 28 21:27 still logged in
  3. root pts/1 192.168.1.119 Tue May 28 14:24 still logged in
  4. root pts/3 192.168.1.6 Tue May 28 12:04 - 14:12 (02:07)

  5. wtmp begins Sat Jun 4 06:40:32 2016

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

  11. wtmp begins Sat Jun 4 06:40:32 2016
复制代码



显示最后一列主机 IP 地址
  1. [root@localhost ~]# last -n 5 -a -i
  2. root pts/2 Tue May 28 21:27 still logged in 192.168.1.3
  3. root pts/1 Tue May 28 14:24 still logged in 192.168.1.119
  4. root pts/3 Tue May 28 12:04 - 14:12 (02:07) 192.168.1.6
  5. root pts/2 Tue May 28 11:03 - 13:40 (02:37) 192.168.1.6
  6. root pts/1 Tue May 28 08:59 - 13:12 (04:13) 192.168.1.126

  7. wtmp begins Sat Jun 4 06:40:32 2016
  8. You have new mail in /var/spool/mail/root
复制代码



如果只查询某个用户的信息,可执行如下命令,且 -2 的意思为 num 只输出前两行的结果,如查看更多可执行命令 last root 即可;
  1. [root@localhost ~]# last root -2
  2. root pts/1 192.168.1.3 Tue May 28 22:11 still logged in
  3. root pts/2 192.168.1.3 Tue May 28 21:27 still logged in

  4. wtmp begins Sat Jun 4 06:40:32 2016
复制代码






五、使用 lastlog 命令
lastlog 命令用于查看系统中每个用户最后的登录时间
  1. [root@localhost ~]# lastlog
  2. 用户名 端口 来自 最后登陆时间
  3. root pts/1 192.168.1.119 二 5月 28 14:24:05 +0800 2019
  4. bin **从未登录过**
  5. daemon **从未登录过**
  6. adm **从未登录过**
  7. (其他显示结果省略)
复制代码



-u :后面加用户名,则输出指定登录的最后一条记录
  1. [root@localhost ~]# lastlog -u root
  2. 用户名 端口 来自 最后登陆时间
  3. root pts/1 192.168.1.3 二 5月 28 22:11:07 +0800 2019
复制代码



-t :后面加 DAYS NUM 则输出最近几天的记录
  1. [root@localhost ~]# lastlog -t 3
复制代码









上一篇:微软近期高频面试题分享 + 分析(九)
下一篇:找NYC刷题+boot camp 学伴
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表