前言

  • 为啥写这篇?因为听 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 版本

查看列表说明

  • 第一列:用户名
  • 第二列:终端位置,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 开始到现在的信息

last -5 -w -s 202106041733300

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

last -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 掉

last
fuser -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/"$2}')

自己换掉 name

直接 ps -ef 去删掉

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

Linux - last 命令的更多相关文章

  1. linux grep命令

    linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...

  2. Linux常用命令(一)

    Linux常用命令 1. pwd查看当前路径(Print Working Directory)    [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...

  3. Linux下命令行安装weblogic10.3.6

    Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ...

  4. Linux paste命令

    Linux paste命令用于合并文件的列. paste指令会把每个文件以列对列的方式,一列列地加以合并. 语法 paste [-s][-d <间隔字符>][--help][--versi ...

  5. 20145222《信息安全系统设计基础》Linux常用命令汇总

    学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ...

  6. Linux sudo 命令的应用

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  7. linux 基础命令与文件管理

      Linux终端介绍 Shell提示符 Bash Shell基本语法 基本命令的使用:ls.pwd.cd 查看系统和BIOS硬件时间 Linux如何获得帮助 Linux关机命令:shutdow.in ...

  8. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  9. linux常用命令的介绍

    本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户 ...

  10. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

随机推荐

  1. kubernetes之pod拓扑分布约束

    在日常使用 kubernetes 的过程中中,很多时候我们并没有过多的关心 pod 的到底调度在哪里,只是通过多副本的测试,来提高的我们的业务的可用性,但是当多个相同业务 pod 在分布在相同节点时, ...

  2. SpringIOC框架简单实现(注解实现)

    SpringIOC框架简单实现(注解实现) 前情回顾 SpringIOE简单介绍 运用注解的方式来实现IOC 首先,让我们来创建一个Dog类 @Component("dog")// ...

  3. linux下安装并使用msgfmt命令

    msgfmt安装方法: sudo apt-get install gettext 编码 po 文件为 mo 文件: msgfmt -o test.mo test.po mo 文件反编码成 po文件: ...

  4. 不可不知的CSS小技巧

    一.表单部分 1.禁止textarea文本域的缩放 resize:none; 2.去除初始化textarea下拉条 overflow:auto; 3.如何让表单中的选项按钮,点击文字也能选中? < ...

  5. Windows之磁盘管理

    0x01 磁盘管理概述 ​ 磁盘管理是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的,他们位于计算机管理控制台中,它包括查错程序和磁盘碎片整理程序以及磁盘整理程序.(来源百度 ...

  6. IDAPython类库---idautils.py的源码

    #--------------------------------------------------------------------- # IDAPython - Python plugin f ...

  7. C#-string生成图片

    public static Bitmap GetLink(string Wordstr) { #region older //arial //StrForImg sf = new StrForImg( ...

  8. vue-axios的总结及项目中的常见封装方法。

    前言 我们知道 vue 2.0版本开始推荐使用 axios 来完成前端 ajax 请求,axios 是一个基于Promise 的 http 库,可以用在浏览器和 node.js 中,axios 成为v ...

  9. [C#] 使用 NAudio 实现音频可视化

    预览: 捕捉声卡输出: 实现音频可视化, 第一步就是获得音频采样, 这里我们选择使用计算机正在播放的音频作为采样源进行处理: NAudio 中, 可以借助 WasapiLoopbackCapture ...

  10. NAG博客目录

    一.Scrum Meeting 1. Alpha Scrum meeting 1 Scrum meeting 2 Scrum meeting 3 Scrum meeting 4 Scrum meeti ...