Linux - last 命令

简介: Linux - last 命令

前言


  • 为啥写这篇?因为听 grep、sed 教程的时候有这个命令
  • 栗子
  • 加上工作中,运维给我排查问题的时候也用到了,感觉挺重要,先了解为敬!

 

命令作用


  • 显示上次登录用户的列表
  • 这个是在 Linux 下的 last 命令,跟 Mac 下有点不同

 

语法格式


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

 

参数说明

参数 含义
-<num> 显示多少行
-a, --hostlast  last在最后一列中显示主机名
-d, --dns 将IP号转换回主机名
-f, --file <file> <读取特定文件而不是 /var/log/wtmp
-F, --fulltimes  打印完整的登录和注销时间和日期 
-i, --ip 以数字和点表示法显示ip编号
-n, --limit <number> 限制要显示的行数
-R, --nohostname 不显示hostname字段
-s, --since <time> 显示指定时间以来的行
-t, --until <time> 显示指定时间之前的行
-p, --present <time> 显示在指定时间出现的人员
-w, --fullnames 显示完整的用户名和域名
-x, --system 显示系统关闭条目和运行级别更改
-h, --help 帮助
-V, --version 版本

 

查看列表说明


image.png


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

 

显示5行,将 host 放在最后一列,打印完整的时间日期,并将 ip 转成主机名


last -5 -a -d -F

image.png


可以看到不加 -F,时间一列的区别

 

不显示 hostname


last -R

image.png


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


last -5 -w -s 202106041733300

image.png


显示5行,并只显示在 2021-06-06 00:00:00 之前的信息


last -5 -t 20210606000000

image.png


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 不一样

 

last -f /var/log/wtmp


last -f /var/log/wtmp

image.png

等价于只敲 last

 

last -f /var/log/btmp


last -f /var/log/btmp

image.png

  • 和 lastb 查出来用户列表信息是一样的
  • 本地用户直接 ssh 登阿里云
  • 因为阿里云没有 polo 这个用户,所以连不上
  • 然后系统就自动记录 polo 用户登录系统失败了

 

last -f /var/run/utmp


last -f /var/run/utmp

image.png

当前就一个 root 用户登录,加上一个系统信息

 

last -f /var/log/lastlog


last -f /var/log/lastlog

image.png

直接用 last -f 好像并不会显示信息,应该是因为读取的文件的数据结构不一致的原因

 

lastlog


lastlog

image.png

后面查了下,可以直接用 lastlog 查看  /var/log/lastlog

 

实际工作场景:因为某些用户的链接数太多导致无法再连接,此时需要断开用户已存在的终端链接


通过 last 找到用户的终端信息,然后用 fuser kill 掉

last

fuser -k /dev/pts/0

image.png

  • 这里就踩了个坑,如果直接敲 pts/0 会报错, 因为路径不对,需要加上根路径 /dev/pts/0
  • 杀掉当前终端链接文件后,我的 ssh 连接就自动退掉了

 

重新 ssh 连接服务器,查看之前的登录信息

image.png

fuser 命令详解文章

https://www.cnblogs.com/poloyy/p/14846179.html

 

通过 fuser 批量杀掉同一个用户的终端链接

fuser -k $(last -w | grep name | awk'{print "/dev/"$2}')

自己换掉 name

 

直接 ps -ef 去删掉

ps -ef|grep name | awk'{print $2}' | xargskill -9

相关文章
|
7天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
67 6
|
8天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
34 3
|
8天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
26 2
|
16天前
|
缓存 监控 Linux
|
19天前
|
Linux Shell 数据安全/隐私保护
|
20天前
|
域名解析 网络协议 安全
|
3天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
20 3
|
26天前
|
运维 监控 网络协议
|
27天前
|
监控 Linux Shell
|
8天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
30 3
下一篇
无影云桌面