前言

  • 为啥写这篇?因为听 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. addslashes,htmlspecialchars,htmlentities转换或者转义php特殊字符防止xss攻击以及sql注入

    一.转义或者转换的目的 1. 转义或者转换字符串防止sql注入 2. 转义或者转换字符防止html非过滤引起页面布局变化 3. 转义或者转换可以阻止javascript等脚本的xss攻击,避免出现类似 ...

  2. SpringAOP_构造注入实现

    SpringAOP_构造注入实现 AOP_面向切面编程初步了解 让我们先想象一个场景,你正在编写一个项目,在开发过程中的多个模块都有某段重复的代码,于是你选择将其抽象成一个方法,然后在需要的地方调用这 ...

  3. UVA11019KMP(二维矩阵匹配出现次数)

    题意:     给你两个矩阵,一个大的一个小的,然后问你这个小矩阵在大的矩阵里出现了多少次? 思路:       说好了AC自动机的,我自己尝试写了个暴力的KMP竟然过了,AC自动机自己的模板还没写完 ...

  4. Portswigger web security academy:Cross-site request forgery (CSRF)

    Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...

  5. 深入探索Android热修复技术原理读书笔记 —— 代码热修复技术

    在前一篇文章 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍中,对热修复技术进行了介绍,下面将详细介绍其中的代码修复技术. 1 底层热替换原理 在各种 Android 热修复方案中 ...

  6. PHP 上传文件至阿里云OSS对象存储

    简述 1.阿里云开通对象存储服务 OSS 并创建Bucket 2.下载PHP SDK至框架扩展目录,点我下载 3.码上code 阿里云操作 开通对象存储服务 OSS 创建 Bucket 配置Acces ...

  7. solidworks中 toolbox调用出现未配置的解决方法

    解决步骤:1:win7卸载安全补丁:KB3072630 WIN10,忽略.2:关闭所有Solidworks的进程3:CMD命令行进入:cd c:\program files\solidwokrs co ...

  8. CRM数据分析的重要作用

    优秀的管理者都知道企业想要实现业务大幅增长不是一件容易的事情.这往往需要通过明智的决策和正确的时机才能够实现.所以,您需要有洞察正确的时间和制定正确决策的能力,这样才能确保您做出正确的决定. CRM系 ...

  9. PHPcms v9.6.0 文件上传漏洞

    title: PHPcms v9.6.0 文件上传漏洞 date: 2021-4-5 tags: 渗透测试,CVE漏洞复现,文件上传 categories: 渗透测试 CVE漏洞复现 文件上传 PHP ...

  10. 80行代码教你写一个Webpack插件并发布到npm

    1. 前言 最近在学习 Webpack 相关的原理,以前只知道 Webpack 的配置方法,但并不知道其内部流程,经过一轮的学习,感觉获益良多,为了巩固学习的内容,我决定尝试自己动手写一个插件. 这个 ...