Unbutu日志常用命令介绍(四)

      本文介绍了Unbutu日志查询的常用命令的last,lastb,lastlog

1.last

      last用于检索和展示系统中用户的登录信息,它从/var/log/wtmp文件中读取记录,并将登录信息按时间顺序列出。

执行 last 命令时,默认读取  /var/log/wtmp  文件

  • 它是一个二进制文件,记录每个用户的登录系统次数和持续时间、注销、系统重启、停机等事件
  • 它是永久记录这些信息的,系统运行时间增加,文件也会越来越大
  • 因为它本身是一个二进制文件,所以无法直接 cat 查看,因此诞生了 last 命令来查

   语法格式:

last [options] [<username>...] [<tty>...]

 常用参数:

查看列表说明:

  • 第一列:用户名
  • 第二列:终端位置,pts/0 (伪终端) 意味着从 SSH 或 telnet 的远程连接的用,.tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户,0通常表示用户正在登录桌面环境。
  • 第三列:登录的 IP 或终端名,用户通过本地终端连接则显示空,除了重启活动,内核版本会显示在状态中
  • 第四列:登录开始时间
  • 第五列:结束时间
  • 第六列:持续时间,still logged in 表示仍然在线

常用命令简介: 

  1. 显示所有用户的登录记录:
    last

 该命令将列出所有用户的登录记录,包括登录时间、持续时间、登录来源等信息

     2. 显示特定用户的登录记录:

last [用户名]

 通过指定用户名,可以仅显示该用户的登录记录。

     3. 显示最近的N条登录记录:

last -n [数量]

 该命令将显示最近的指定数量(N)的登录记录。

    4. 显示登录记录的详细信息:

last -f /var/log/wtmp

通过使用"-f"选项,可以指定读取的日志文件,从而查看更详细的登录信息。 

   5.  查看重启时间

last reboot 

 该命令可以查询重启的时间。

6.显示5行,显示完整的用户名和主机名,并只显示从 2021-06-04 17:33:00 开始到现在的信息

last -5 -w -s 202106041733300

 该命令显示指定时间段的登录信息

应用场景:

   

last指令在以下情况下发挥重要作用:

排查登录问题:
通过查看用户的登录记录,可以确定用户最近一次的登录时间和来源,帮助排查登录问题和确认用户活动。

监控用户活动:
last指令可以帮助管理员监控用户的活动,特别是对于敏感操作和关键账户的审计。通过检查登录记录,可以及时发现异常活动并采取相应措施。

安全审计:
对于安全审计需求,last指令是一项重要的工具。它可以记录用户的登录和注销信息,并提供详细的时间戳和登录来源,有助于分析和跟踪用户的活动轨迹。

2.lastb

        lastb 列出登入系统失败的用户相关信息

       lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。

 语法格式:

lastb(选项)(参数)

 常用参数:

      这个命令的输出包括登录失败的用户名、登录IP地址、登录时间和失败原因等信息。可以使用一些选项来过滤输出,例如-n选项可以指定要显示的记录数,-f选项可以指定要显示的文件名 

 常用命令简介:

    1.列出登入失败的用户记录

[root@itcast ~]# lastb
root     pts/1                         Fri Aug  2 21:00 - 21:00  (00:00)    
root     pts/1                         Thu Aug  1 21:27 - 21:27  (00:00)    

btmp begins Thu Aug  1 21:27:11 2019
[root@itcast ~]# 

lastb指令,它会读取位于/var/log/btmp的文件,并把该文件内容记录的登入系统失败**的用户名单,全部显示出来。btmp是二进制文件,所以用 last -f /var/log/btmp 结果一样。 

  2.  使用-a参数把IP显示在最后列

[root@itcast ~]# lastb -a
root     pts/1        Fri Aug  2 21:00 - 21:00  (00:00)     
root     pts/1        Thu Aug  1 21:27 - 21:27  (00:00)     

btmp begins Thu Aug  1 21:27:11 2019
[root@itcast ~]# 

3.  使用-R参数不显示主机名和IP信息 

[root@itcast ~]# lastb -R 
root     pts/1        Fri Aug  2 21:00 - 21:00  (00:00)    
root     pts/1        Thu Aug  1 21:27 - 21:27  (00:00)    

btmp begins Thu Aug  1 21:27:11 2019
[root@itcast ~]# 

 4. 显示3条登录失败的信息

[root@itcast ~]# lastb -n 3
root     pts/1                         Fri Aug  2 21:00 - 21:00  (00:00)    
root     pts/1                         Thu Aug  1 21:27 - 21:27  (00:00)    

btmp begins Thu Aug  1 21:27:11 2019
[root@itcast ~]# 

  5. 显示6条登录失败的信息

[root@itcast ~]# lastb -n 3
root     pts/1                         Fri Aug  2 21:00 - 21:00  (00:00)    
root     pts/1                         Thu Aug  1 21:27 - 21:27  (00:00)    

btmp begins Thu Aug  1 21:27:11 2019
[root@itcast ~]# 

6.  显示2条关于root用户登录失败的信息

[root@itcast ~]# lastb -n 2 root
root     pts/1                         Fri Aug  2 21:00 - 21:00  (00:00)    
root     pts/1                         Thu Aug  1 21:27 - 21:27  (00:00)    

btmp begins Thu Aug  1 21:27:11 2019
[root@itcast ~]# 

 应用场景:

               在安全方面,"lastb"命令可以用于检查是否有暴力破解SSH登录密码的尝试。通过检查登录失败的记录,可以确定是否有某些IP地址在尝试登录到系统上,并尝试使用不同的用户名和密码进行登录。如果发现这种情况,可以考虑使用类似于本文介绍的脚本来保护系统免受暴力破解攻击

3. lastlog

    lastlog的命令,它可以显示用户最近一次登录的信息。它是读取/var/log/lastlog的信息输出的。

 语法格式:

lastlog [选项] [用户...]

  常用参数:

  常用命令简介:

   1.  显示所有用户最后一次登录时间

lastlog

 此方法将显示所有用户的最后一次登录信息。

2.  指定用户的最后一次登录时间

lastlog [用户名]

 此方法将显示这个用户的最后一次登录信息。

3.自某个日期以来每个用户的最后一个登录时间

lastlog -t [日期] 

此方法将显示给定日期后每个用户的最后一次登录信息。

4. 显示所有用户自从某个日期之后的最后一个登录信息(例如2022-01-01)

lastlog -t 20220101000000

5. 显示指定用户的最后一个登录信息:

lastlog user1 

6. 显示给定用户自从某个日期之后的最后一个登录信息:

lastlog -u user1 -t 20220101000000

应用场景:

        首先列举所有的用户,包括不能登录的系统用户(伪用户),但是会显示这些伪用户从未登录过。另外还会显示最后一次登录本系统的用户的登录信息。 

总结:

last 命令的数据源
执行 last 命令时,默认读取  /var/log/wtmp  文件

它是一个二进制文件,记录每个用户的登录系统次数和持续时间、注销、系统重启、停机等事件
它是永久记录这些信息的,系统运行时间增加,文件也会越来越大
因为它本身是一个二进制文件,所以无法直接 cat 查看,因此诞生了 last 命令来查看

还有另外一个命令,lastb

它是读取 /var/log/btmp 文件,记录登录系统失败的每个用户
当然,用 last -f 读取这个文件也是一样效果的

 /var/run/utmp 

它比较重要,记录着当前正在登录系统的每个用户
它的数据结构和 /var/log/wtmp 的数据结构一样

 /var/log/lastlog 

记录着每个用户最后登录系统的信息
它的数据结构和 /var/run/utmp 、 /var/log/wtmp 不一样

4.who

   who命令  查看当前用户的信息

        who 命令的功能是用于显示当前登录用户信息,包含登录的用户名、终端、日期时间、进程等信息,帮助运维人员了解当前系统的登入用户情况。

语法格式:

who [参数]

常用参数:

        

 常用命令简介:

1.查看当前用户的信息

        第一列:显示用户名称。

        第二列:显示用户连接方式。tty 表示用户直连主机,pts 表示远程登录。

        第三列:显示用户登录日期。

        第四列:显示用户登录时间。

        第五列:显示用户登录的 IP 地址。

 [root@linux ~]# who
 root     tty1         2023-05-17 23:27
 root     pts/0        2023-05-22 21:55 (192.168.100.1)
 root     pts/2        2023-05-23 01:53 (192.168.100.1)

2. 查看当前用户信息,并加上标题

 [root@linux ~]# who -H
 NAME     LINE         TIME             COMMENT
 root     tty1         2023-05-17 23:27
 root     pts/0        2023-05-22 21:55 (192.168.100.1)
 root     pts/2        2023-05-23 01:53 (192.168.100.1)

3. 查看当前用户全部的信息

 [root@linux ~]# who -H -a
 NAME       LINE         TIME             IDLE          PID COMMENT  EXIT
            system boot  2023-05-17 23:26
 root     + tty1         2023-05-17 23:27  old          666
            run-level 3  2023-05-17 23:26
 root     + pts/0        2023-05-22 21:55 03:53       41601 (192.168.100.1)
            pts/1        2023-05-23 01:54             50684 id=ts/1  term=0 exit=0
 root     + pts/2        2023-05-23 01:53   .         50718 (192.168.100.1)

 4.查看系统最近的启动时间

 [root@linux ~]# who -b
          system boot  2023-05-17 23:26

5. 查看系统的运行级别

 [root@linux ~]# who -r
          run-level 3  2023-05-17 23:26

6. 查看系统已登录的列表

[root@linux ~]# who -H -u
NAME     LINE         TIME             IDLE          PID COMMENT
root     tty1         2023-05-17 23:27  old          666
root     pts/0        2023-05-22 21:55 04:06       41601 (192.168.100.1)
root     pts/2        2023-05-23 01:53   .         50718 (192.168.100.1)

应用场景

     它可以查看系统当前运行了多长时间,以及让其他人了解当前系统接入多少个用户,对运维人员比较有帮助。

5.uptime

         uptime命令是一个Linux/Unix系统下的命令,它用来显示系统的运行时间以及平均负载。

语法格式:

uptime

常见参数:

 

常用命令介绍:

1. 查看系统运行时长与平均负载。

09:30:00 up 10 days,  2:30,  2 users,  load average: 0.10, 0.08, 0.05

 解释:

  • 09:30:00:当前系统时间。
  • up 10 days, 2:30:系统已经运行了10天2小时30分钟。
  • 2 users:当前登录用户数量为2。
  • load average: 0.10, 0.08, 0.05:系统平均负载情况,分别对应1分钟、5分钟和15分钟的负载平均值。在这个示例中,负载情况非常低,系统处于较轻松的状态。

负载平均值表示系统中正在运行和等待运行的进程数量的平均值。负载值越高,表示系统的负荷越重。通常,负载值小于CPU核心数是较为理想的状态,但这也取决于具体的应用场景。 

2.查看系统启动时间

uptime -s 
2023-12-18 23:04:51

3. 只输出系统运行时长

uptime -p 
up 28 minutes

 应用场景:

        用于显示系统总共运行了多长时间和系统的平均负载

拓展知识:

1)什么是系统平均负载?

        系统平均负载指单位时间内,系统中处于可运行状态和不可中断状态的进程数,也就是平均活跃进程数,他和 CPU 使用率没有直接关系。

可运行状态的进程指正在使用 CPU 或正在等待使用 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。

不可中断状态的进程指正在等待某些 I/O 的进程,即我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。例如等待磁盘 I/O,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。

2)系统平均负载多少时合理

uptime 命令给出的三个时间段的平均负载并不是标准化的,因为系统中 CPU 核心数量是不定的。所以平均负载为 1 意味着拥有一个 CPU 核心的系统一直在忙碌,而在一个拥有 4 个 CPU 核心的系统上,意味着系统 75% 的时间是空闲的。

所以,当系统平均负载除以 CPU 核心数小于等于 1表示系统没有出现过载的情况。最理想的情况是每个CPU 上都刚好运行一个进程,这样 CPU 就得到了充分的利用。

三个时间段统计出的系统平均负载,我们以哪个数字为准?一分钟?五分钟?还是十五分钟?我们应该着眼于五分钟或者十五分钟的平均数值,如果前一分钟的负载情况是 1.00,那么仍可以说明认定服务器情况还是正常的,但是如果十五分钟的数值仍然保持在 1.00,那么就值得注意了。

另外,读取文件 /proc/loadavg 可直接查看系统平均负载。

cat /proc/loadavg 0.04 0.03 0.05 1/319 21900

除了前 3 个数字表示系统平均负载外,后面的一个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程 ID。

3)获取系统 CPU 核心数

        使用 lscpu 命令查看

或者直接访问文件 /proc/cpuinfo 获取 CPU 核心数。

grep ‘model name’ /proc/cpuinfo | wc -l 6

4)平均负载与 CPU 使用率的关系

在日常使用中,我们经常容易把平均负载和CPU使用率混淆,这里我们做下区分。

平均负载是指单位时间内,系统中处于可运行状态和不可中断状态的进程数,所以,他不仅包扩了正在使用CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。

而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,和平均负载并不一定完全对应。比如:

(1)CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;

(2)I/O 密集型进程, 等待 I/O 也会导致平均负载升高,但是 CPU 使用率不一定很高;

(3)存在大量等待 CPU 调用的进程也会导致平均负载升高,此时的 CPU 使用率也会比较高。

6. w

        w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。

语法格式:

w(选项)(参数)

 常用参数

常见用法:

1. 显示当前服务器的详细的信息

[root@rhel77 ~]# w
 16:26:42 up 50 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      15:38   47:54   0.04s  0.04s -bash
root     pts/0    192.168.10.1     15:39    2.00s  0.03s  0.00s w
[root@rhel77 ~]# 

16:26:42(当前服务器时间) up 50 min(服务器已运行时长),  2 users(当前登录的用户个数),  load average: 0.00, 0.01, 0.05(当前CPU负载,当数值超过当前系统内核数量2倍的时候[即:逻辑CPU颗数*2],表示系统已经有了压力)

USER:登录账号名称   

TTY:终端名称      

FROM:远程主机信息            

LOGIN@:登录时间

IDLE:空闲时间(自用户上一次与终端进行交互以来的空闲时间)   

JCPU:JCPU信息(附加到tty的所有进程使用的时间)   

PCPU:PCPU信息(当前用户进程所用的时间,显示在“ WHAT”字段中的那个) 

WHAT:当前正在运行进程的命令行
 

 

2.显示登录当前服务器用户的详细信息(不显示用户从何处登录系统)

[root@rhel77 ~]# w -f
 16:33:52 up 57 min,  2 users,  load average: 0.01, 0.02, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      15:38   55:04   0.04s  0.04s -bash
root     pts/0     15:39    0.00s  0.03s  0.00s w -f
[root@rhel77 ~]# 

3.显示登录当前服务器用户的详细信息(不显示标题信息)

[root@rhel77 ~]# w -h
root     tty1                      15:38   55:18   0.04s  0.04s -bash
root     pts/0    192.168.10.1     15:39    6.00s  0.03s  0.00s w -h
[root@rhel77 ~]# 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值