• Linux学习-55-查看目前和历史登录系统的用户信息(w/who、last/last、lastlog命令)


    12.25 w和who命令:查看登陆用户信息
    • Linux 中,使用 w 或 who 命令都可以查看服务器上目前已登录的用户信息,两者的区别在于,w 命令除了能知道目前已登陆的用户信息,还可以知道每个用户执行任务的情况。
    • w 命令的基本格式如下:
    [root@localhost ~]# w [选项] [用户名]
    
    • 1
    • 如果 w 命令后跟 [用户名],则表示只显示此用户的信息。此命令常用选项及含义:
    选项含义
    -h不显示输出信息的标题
    -l用长格式输出
    -s用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
    -V显示版本信息
    • 显示当前用户登陆信息。
    [root@CncLucZK test]# w
     19:21:05 up 7 days,  5:51,  2 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    110.19.110.72    17:18    0.00s  0.04s  0.00s w
    root     pts/1    110.19.110.72    17:18    1:23m  0.06s  0.06s -bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 上面的输出信息中,第一行其实和 top 命令的第一行非常类似,主要显示了当前的系统时间、系统从启动至今已运行的时间、登陆到系统中的用户数和系统平均负载。

    平均负载(load average)指的是在 1 分钟、5 分钟、15 分钟内系统的负载状况。

    • 从第二行开始,显示的是当前所有登陆系统的用户信息,第二行是用户信息的各列标题,从第三行开始每行代表一个用户。这些标题的含义
    标题含义
    USER登录到系统的用户。
    TTY登录终端。
    FROM表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。
    LOGIN@用户登陆的日期和时间。
    IDLE表示某个程序上次从终端开始执行到现在所持续的时间。
    JCPU和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。
    PCPU当前进程所占用的 CPU 运算时间。
    WHAT当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。
    • 从 w 命令的输出中已知,Linux 服务器上已经登录了两个 root 用户,两个都是从远程终端 登录的(pts/0、pts/1),登录的来源 IP 是 110.19.110.72。

    • 相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知道其他用户正在执行的命令。 who 命令的基本格式如下:

    [root@localhost ~]# who [选项] [file]
    
    • 1

    who 命令默认是通过 /var/run/utmp 文件来获取登陆用户信息,但如果通过 file 指定另一个文件,则 who 命令将不再默认读取 /var/run/utmp 文件,而是读取该指定文件来获取信息。

    • who 命令常用选项及含义:
    选项含义
    -a列出所有信息,相当于所有选项。
    -b列出系统最近启动的时间日期。
    -l列出所有可登陆的终端信息。
    -m仅列出关于当前终端的信息,who -m 命令等同于 who am i
    -q列出在本地系统上的用户和用户数的清单。
    -r显示当前系统的运行级别。
    -s仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。
    -u显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
    -T 或 -w显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。
    • 列出在本地系统上的用户和用户数的清单。
    [root@CncLucZK test]# who -q
    root root
    # users=2
    [root@CncLucZK test]# who -r				#当前系统的运行级别。
             run-level 3  2022-10-19 13:30
    [root@CncLucZK test]# who -u				#当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
    root     pts/0        2022-10-26 17:18   .       1473553 (110.19.110.72)
    root     pts/1        2022-10-26 17:18 01:33     1473606 (110.19.110.72)
    [root@CncLucZK test]# who -T				#显示 tty 终端的状态
    root     + pts/0        2022-10-26 17:18 (110.19.110.72)
    root     + pts/1        2022-10-26 17:18 (110.19.110.72)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 显示系统最新启动日期,以及每个用户的登陆详情、终端状态。
    [root@CncLucZK test]# who			#相当于who -s仅显示名称、线路和时间字段信息。这是 who 命令的默认选项
    root     pts/0        2022-10-26 17:18 (110.19.110.72)
    root     pts/1        2022-10-26 17:18 (110.19.110.72)
    
    • 1
    • 2
    • 3
    12.26 last和lastlog命令:查看过去登陆的用户信息
    • 使用 last 和 lastlog 命令:来查看现在已经退出登录的用户。last 命令可以查看当前和过去登陆系统用户的相关信息;lastlog 命令可以查看到每个系统用户最近一次登陆系统的时间。

    • last 命令的基本格式如下所示:

    [root@localhost ~]# last [选项]
    
    • 1
    • 常用的选项及含义:
    选项含义
    -a把从何处登陆系统的主机名或 IP 地址显示在最后一行。
    -R不显示登陆系统的主机名或 IP 地址。
    -x显示系统关机、重新开机以及执行等级的改变等信息。
    -n 显示列数设置列出信息的显示列数。
    -d将显示的 IP 地址转换成主机名称。

    在执行 last 命令时,它默认会读取 /var/log/wtmp 日志文件,这是一个二进制文件,不能直接用 vi 编辑,只能通过 last 命令调用。

    • 查询当前和过去登录的用户信息。
    [root@CncLucZK test]# last -a | head -n 10
    root     pts/1        Wed Oct 26 17:18   still logged in    110.19.110.72
    root     pts/0        Wed Oct 26 17:18   still logged in    110.19.110.72
    root     pts/0        Wed Oct 26 11:33 - 16:53  (05:20)     110.19.110.72
    root     pts/2        Wed Oct 26 00:22 - 00:22  (00:00)     110.19.110.72
    root     pts/0        Wed Oct 26 00:09 - 03:12  (03:02)     110.19.110.72
    root     pts/1        Tue Oct 25 23:56 - 03:12  (03:16)     110.19.110.72
    root     pts/0        Tue Oct 25 19:19 - 00:09  (04:50)     110.19.110.72
    root     pts/1        Tue Oct 25 13:43 - 16:06  (02:23)     110.19.110.72
    root     pts/0        Tue Oct 25 08:51 - 16:08  (07:16)     110.19.110.72
    root     pts/0        Mon Oct 24 23:28 - 02:21  (02:52)     110.19.110.72
    #用户名 登录终端  					登录时间 - 退出时间(在线时间)	登录IP
    reboot   system boot  4.18.0-80.el8.x8 Sat Jun  4 12:17 - 21:22 (124+09:04)
    #系统的重启时间
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • lastlog 命令,此命令可以查看登陆过当前系统用户的最近一次登陆时间
    [root@CncLucZK test]# lastlog
    Username         Port     From             Latest
    root             pts/1    110.19.110.72    Wed Oct 26 17:18:47 +0800 2022
    bin                                        **Never logged in**
    daemon                                     **Never logged in**
    ...
    www              pts/0                     Sun Oct  9 09:39:46 +0800 2022
    zk               pts/0                     Wed Oct 26 17:53:34 +0800 2022
    u-dev1           pts/0                     Wed Oct 19 23:33:19 +0800 2022
    u-dev2           pts/0                     Wed Oct 19 21:58:48 +0800 2022
    u1-test          pts/0                     Sat Oct 15 13:49:01 +0800 2022
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • lastlog 命令默认是去读取 /var/log/lastlog 日志文件的,这个文件同样是二进制文件,不能直接用 vi 编辑,需要使用 lastlog 命令调用。

    参考文献:
    Linux last和lastlog命令:查看过去登陆的用户信息

    下一篇:Linux学习-56-dmesg、free、wc、xargs 命令
  • 相关阅读:
    外滩大会今日开幕 生成式AI成为热议话题
    德人合科技 | 天锐绿盾终端安全管理系统
    Vue I18n(Vue国际化)
    VivadoAndTcl: namespace
    html网页设计大学生作业成品——公益校园网站设计与实现(HTML+CSS+JavaScript)
    FPGA project : uart232_ram_vga
    超详细的Python实现MySQL数据库基本操作,今天小编给大家整理好了
    DDE图像增强
    python二次开发Solidworks:选择管理器 SelectionManager
    一文学会JavaScript
  • 原文地址:https://blog.csdn.net/weixin_42045639/article/details/128000915