
命令作用显示上次登录用户的列表这个是在 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 | 版本 |
查看列表说明第一列:用户名第二列:终端位置,pts/0 (伪终端) 意味着从 SSH 或 telnet 的远程连接的用,.tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户第三列:登录的 IP 或终端名,用户通过本地终端连接则显示空,除了重启活动,内核版本会显示在状态中第四列:登录开始时间第五列:结束时间第六列:持续时间,still logged in 表示仍然在线
显示5行,将 host 放在最后一列,打印完整的时间日期,并将 ip 转成主机名
last -5 -a -d -F
可以看到不加 -F,时间一列的区别
不显示 hostname
last -R显示5行,显示完整的用户名和主机名,并只显示从 2021-06-04 17:33:00 开始到现在的信息
5 -w -s 202106041733300
显示5行,并只显示在 2021-06-06 00:00:00 之前的信息
5 -t 20210606000000
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等价于只敲 last
last -f /var/log/btmp
last -f /var/log/btmp和 lastb 查出来用户列表信息是一样的本地用户直接 ssh 登阿里云因为阿里云没有 polo 这个用户,所以连不上然后系统就自动记录 polo 用户登录系统失败了last -f /var/run/utmp
last -f /var/run/utmp 当前就一个 root 用户登录,加上一个系统信息
last -f /var/log/lastlog
last -f /var/log/lastlog直接用 last -f 好像并不会显示信息,应该是因为读取的文件的数据结构不一致的原因
lastlog
lastlog
后面查了下,可以直接用 lastlog 查看 /var/log/lastlog
实际工作场景:因为某些用户的链接数太多导致无法再连接,此时需要断开用户已存在的终端链接
通过 last 找到用户的终端信息,然后用 fuser kill 掉
lastfuser -k /dev/pts/0这里就踩了个坑,如果直接敲 pts/0 会报错, 因为路径不对,需要加上根路径 /dev/pts/0 杀掉当前终端链接文件后,我的 ssh 连接就自动退掉了
重新 ssh 连接服务器,查看之前的登录信息
fuser 命令详解文章
https://www.cnblogs.com/poloyy/p/14846179.html
通过 fuser 批量杀掉同一个用户的终端链接
fuser -k $(last -w | grep name | awk '{print "/dev/"}')
自己换掉 name
直接 ps -ef 去删掉
ps -ef|{print }' | xargs kill -9
总结
以上是内存溢出为你收集整理的Linux - last 命令全部内容,希望文章能够帮你解决Linux - last 命令所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)