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 | 版本 |
查看列表说明

- 第一列:用户名
- 第二列:终端位置,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 命令的更多相关文章
- linux grep命令
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...
- Linux常用命令(一)
Linux常用命令 1. pwd查看当前路径(Print Working Directory) [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...
- Linux下命令行安装weblogic10.3.6
Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ...
- Linux paste命令
Linux paste命令用于合并文件的列. paste指令会把每个文件以列对列的方式,一列列地加以合并. 语法 paste [-s][-d <间隔字符>][--help][--versi ...
- 20145222《信息安全系统设计基础》Linux常用命令汇总
学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ...
- Linux sudo 命令的应用
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- linux 基础命令与文件管理
Linux终端介绍 Shell提示符 Bash Shell基本语法 基本命令的使用:ls.pwd.cd 查看系统和BIOS硬件时间 Linux如何获得帮助 Linux关机命令:shutdow.in ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- linux常用命令的介绍
本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户 ...
- Linux查找命令:grep,awk,sed
grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...
随机推荐
- 软件篇-06-SLAM小车Self Navigation
当SLAM小车能够以较高的精度运动到人为设置的目标点时,下一步就是把SLAM小车放到一个陌生的环境中,让它自己建图了.为什么?因为它已经是一只成熟的SLAM小车了. 我这里写的比较简单,刚写还没几 ...
- 问题:dependencyManagement和dependencies有什么区别
dependencyManagement和dependencies有什么区别 一.Maven的包管理 在maven中,dependencyManagement.dependencies和depende ...
- 【Nginx(二)】Nginx目录结构和常用的命令以及核心配置文件
Nginx的目录结构: 默认的安装路径 : /usr/local/nginx 安装完成后,Nginx的目录结构如下: conf: #所有配置文件的目录 nginx.conf #默认的主要配置文件 ...
- 播放视频插件swfobject.js与Video Html5
播放视频的方法: 方法一. 使用HTML5播放 <video src="./files/Clip_480_5sec_6mbps_h264.mp4" width="1 ...
- Python第一章-基础知识
第一章:基础知识 1.1 安装python. 直接官网下载最新的python然后默认安装就可以了,然后开始菜单里找到pyhton *.*.* Shell.exe运行python的交互shell ...
- Windowsw核心编程 第13章 Windows内存结构
第1 3章 Wi n d o w s的内存结构 13.1 进程的虚拟地址空间 每个进程都被赋予它自己的虚拟地址空间.对于 3 2位进程来说,这个地址空间是4 G B,因为3 2位指针可以拥有从0 x ...
- Portswigger web security academy:DOM-based vulnerabilities
DOM-based vulnerabilities 目录 DOM-based vulnerabilities 1 - DOM XSS using web messages 2 - DOM XSS us ...
- python主线程捕获子线程异常
python内置threading.Thread类创建的子线程抛出的异常无法在主线程捕获,可以对该类进行优化,为子线程添加exit code属性,主线程通过获取子线程的返回状态,来判断子线程中是否发生 ...
- XD to Flutter 2.0 现已发布!
Flutter 是 Google 的开源 UI 工具包.利用它,只需一套代码库,就能开发出适合移动设备.桌面设备.嵌入式设备以及 web 等多个平台的精美应用.过去几年,对于想要打造多平台应用的开发者 ...
- Asp.NetCore Web开发之路由
接着讲asp.net core web开发,这节讲路由系统(Route). 在asp.net core中通过路由来将请求映射到对应的action,主要用到两个中间件,UseRouting()和UseE ...