Linux 中 Tail 命令的 9 个实用示例

news2024/11/13 15:00:11
alt

引言

我们作为 Linux 用户,经常会操作那些在后台长时间运行的进程,这些进程被称作守护进程或服务。例如 Secure Shell (sshd)、Network Manager (networkd)、Volume Manager (LVM)、Cron 等都是服务的典型例子,这样的服务还有很多。

在许多情况下,我们需要查看这些服务的日志文件来解决系统问题。但问题在于,这些服务会产生大量的日志信息,逐条查看这些日志往往既费时又费力。这时,tail 命令就派上用场了。

tail 命令是一个命令行工具,它与 head 命令类似,用于读取文件内容,并将一个或多个文件的最后 10 行显示在屏幕上。

这篇[1]实用的教程中,我们将深入了解 tail 命令。教程结束后,Linux 命令行用户将能够熟练地运用 tail 命令。

1.在Linux中打印文件的最后10行

默认情况下,tail 命令打印给定文件的最后 10 行,如图所示。

$ tail /var/log/secure


Apr  2 14:17:24 TecMint sshd[201178]: Disconnected from user tecmint 192.168.0.162 port 59774
Apr  2 14:17:24 TecMint sshd[201165]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 14:29:12 TecMint sshd[201366]: Accepted password for tecmint from 192.168.0.162 port 56378 ssh2
Apr  2 14:29:12 TecMint systemd[201371]: pam_unix(systemd-user:session): session opened for user tecmint(uid=1002) by (uid=0)
Apr  2 14:29:12 TecMint sshd[201366]: pam_unix(sshd:session): session opened for user tecmint(uid=1002) by (uid=0)
Apr  2 14:29:12 TecMint sshd[201382]: Received disconnect from 192.168.0.162 port 56378:11: disconnected by user
Apr  2 14:29:12 TecMint sshd[201382]: Disconnected from user tecmint 192.168.0.162 port 56378
Apr  2 14:29:12 TecMint sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 TecMint sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 TecMint sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

在这里,我们可以看到上面的命令显示了 /var/log/secure 文件的最后十行。

2. 在 Linux 中打印文件的最后 N 行

在最后一个示例中,该命令打印给定文件的最后 10 行。但是,我们可以使用 -n 选项,它允许我们限制要在屏幕上打印的行数,如图所示。

$ tail -n 3 /var/log/secure

Apr  2 14:29:12 TecMint sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 TecMint sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 TecMint sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

在此示例中,我们可以看到该命令现在仅显示最后三行,而不是十行。

3. Linux 中忽略文件的前 N 行

在这里,我们可以使用加号 (+) 和 -n 选项,这允许我们控制给定文件的起点。

为了理解这一点,让我们使用 +5 值从第 5 行开始输出:

$ tail -n +5 /var/log/secure

Apr  2 14:17:24 TecMint sshd[201178]: Disconnected from user tecmint 192.168.0.162 port 59774
Apr  2 14:17:24 TecMint sshd[201165]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 14:29:12 TecMint sshd[201366]: Accepted password for tecmint from 192.168.0.162 port 56378 ssh2
Apr  2 14:29:12 TecMint systemd[201371]: pam_unix(systemd-user:session): session opened for user tecmint(uid=1002) by (uid=0)
Apr  2 14:29:12 TecMint sshd[201366]: pam_unix(sshd:session): session opened for user tecmint(uid=1002) by (uid=0)
Apr  2 14:29:12 TecMint sshd[201382]: Received disconnect from 192.168.0.162 port 56378:11: disconnected by user
Apr  2 14:29:12 TecMint sshd[201382]: Disconnected from user tecmint 192.168.0.162 port 56378
Apr  2 14:29:12 TecMint sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 TecMint sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 TecMint sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

4. 显示文件的最后 N 个字符

与lines类似,我们也可以使用命令使用-c选项来显示文件的最后N个字符,如下所示:

$ tail -c 7 /var/log/secure

(uid=0)

在此示例中,我们可以看到该命令显示给定文件的最后七个 ASCII 字符。

5. 删除文件的前N个字符

同样,我们可以使用加号 (+) 和 -c 选项来跳过前 N 个字符。因此,让我们使用以下命令跳过文件的第一行:

$ tail -c +5 /var/log/secure

Apr  2 03:02:59 TecMint sudo[162801]: root : TTY=pts/2 ; PWD=/root ; USER=root ; COMMAND=/bin/dnf install R
Apr  2 03:02:59 TecMint sudo[162801]: pam_unix(sudo:session): session opened for user root(uid=0) by root(uid=0)
Apr  2 03:03:02 TecMint sudo[162801]: pam_unix(sudo:session): session closed for user root
Apr  2 03:11:17 TecMint groupadd[163602]: group added to /etc/group: name=avahi, GID=70
Apr  2 03:11:18 TecMint groupadd[163602]: group added to /etc/gshadow: name=avahi
Apr  2 03:11:18 TecMint groupadd[163602]: new group: name=avahi, GID=70
Apr  2 03:11:19 TecMint useradd[163610]: new user: name=avahi, UID=70, GID=70, home=/var/run/avahi-daemon, shell=/sbin/nologin, from=none
Apr  2 03:13:41 TecMint groupadd[163704]: group added to /etc/group: name=colord, GID=986
Apr  2 03:13:41 TecMint groupadd[163704]: group added to /etc/gshadow: name=colord

在这里,我们可以看到该命令显示了除第一行之外的所有行。

6. 在标题中显示文件名

我们可以指示 tail 命令将当前文件名显示为显示标题,这在处理多个文件时会派上用场。因此,让我们使用 -v 选项来启用显示标题:

$ tail -n 3 -v /var/log/secure

==>/var/log/secure <==
Apr  2 14:29:12 TecMint sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 TecMint sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 TecMint sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

在上面的输出中,==> /var/log/secure <== 表示显示头。

7. 在多个文件中将文件名显示为标题

就像任何其他文件处理命令一样,我们也可以通过 tail 命令使用多个文件。在这种情况下,显示标题用于分隔文件内容。

$ tail -n 3 -v /var/log/secure /var/log/secure-20230402

==> /var/log/secure <==
Apr  2 14:29:12 TecMint sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 TecMint sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 TecMint sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

==> /var/log/secure-20230402 <==
Mar 31 03:50:53 TecMint groupadd[156163]: new group: name=docker, GID=987
Mar 31 04:46:11 TecMint sshd[159403]: Accepted password for root from 192.168.0.162 port 46480 ssh2
Mar 31 04:46:11 TecMint sshd[159403]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

在上面的输出中,我们可以看到每个文件的显示标题。

8. 如何禁用文件中的显示标题

在前面的示例中,我们看到该命令在处理多个文件时启用显示标题。但是,我们可以使用 -q 选项抑制这种默认行为。

$ tail -q -n 3 /var/log/secure /var/log/secure-20230402

Apr  2 14:29:12 TecMint sshd[201366]: pam_unix(sshd:session): session closed for user tecmint
Apr  2 15:12:55 TecMint sshd[202049]: Accepted password for root from 192.168.0.162 port 53334 ssh2
Apr  2 15:12:55 TecMint sshd[202049]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Mar 31 03:50:53 TecMint groupadd[156163]: new group: name=docker, GID=987
Mar 31 04:46:11 TecMint sshd[159403]: Accepted password for root from 192.168.0.162 port 46480 ssh2
Mar 31 04:46:11 TecMint sshd[159403]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

在这里,我们可以看到现在该命令将一个又一个地显示文件内容,并且没有任何显示头。

9. 如何观察文件的更改

到目前为止,我们看到 tail 命令在处理完所需数量的行或字符后就会退出。然而,有时我们也想查看新生成的日志。

在这种情况下,我们可以在命令中使用 -f 选项,这使我们能够实时监视文件的更改。

为了理解这一点,首先,让我们在第一个终端中执行以下命令:

$ tail -f /var/log/messages


Apr  2 15:13:28 TecMint NetworkManager[741]:   [1680462808.8441] policy: set-hostname: current hostname was changed outside NetworkManager: 'TecMint'
Apr  2 15:13:28 TecMint systemd[1]: Starting Network Manager Script Dispatcher Service...
Apr  2 15:13:28 TecMint systemd[1]: Started Network Manager Script Dispatcher Service.
Apr  2 15:13:37 TecMint arpwatch[11001]: rename arp.dat -> arp.dat-: Operation not permitted
Apr  2 15:13:38 TecMint systemd[1]: NetworkManager-dispatcher.service: Deactivated successfully.
Apr  2 15:13:58 TecMint systemd[1]: systemd-hostnamed.service: Deactivated successfully.
Apr  2 15:18:03 TecMint systemd[1]: Starting dnf makecache...
Apr  2 15:18:03 TecMint dnf[202235]: Metadata cache refreshed recently.
Apr  2 15:18:03 TecMint systemd[1]: dnf-makecache.service: Deactivated successfully.
Apr  2 15:18:03 TecMint systemd[1]: Finished dnf makecache.

在这里,我们可以看到该命令在显示最后十行后无限等待:

接下来,让我们打开另一个终端并将一些文本附加到numbers-2.txt 文件中:

echo "View Logs in Real-Time" >> /var/log/messages

现在,我们切换到第一个终端来查看新添加的文本:

$ tail -f /var/log/messages

Apr  2 15:13:28 TecMint NetworkManager[741]:   [1680462808.8441] policy: set-hostname: current hostname was changed outside NetworkManager: 'TecMint'
Apr  2 15:13:28 TecMint systemd[1]: Starting Network Manager Script Dispatcher Service...
Apr  2 15:13:28 TecMint systemd[1]: Started Network Manager Script Dispatcher Service.
Apr  2 15:13:37 TecMint arpwatch[11001]: rename arp.dat -> arp.dat-: Operation not permitted
Apr  2 15:13:38 TecMint systemd[1]: NetworkManager-dispatcher.service: Deactivated successfully.
Apr  2 15:13:58 TecMint systemd[1]: systemd-hostnamed.service: Deactivated successfully.
Apr  2 15:18:03 TecMint systemd[1]: Starting dnf makecache...
Apr  2 15:18:03 TecMint dnf[202235]: Metadata cache refreshed recently.
Apr  2 15:18:03 TecMint systemd[1]: dnf-makecache.service: Deactivated successfully.
Apr  2 15:18:03 TecMint systemd[1]: Finished dnf makecache.
View Logs in Real-Time

在这里,我们可以看到 tail 命令显示了新添加的文本。

Reference
[1]

Source: https://www.tecmint.com/tail-command-linux/#5_Remove_First_N_Characters_of_File

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2120782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.10 DFT示例1

1.10 DFT示例1 Tips&#xff1a;离散傅里叶的不同角度的解释。 参考&#xff1a;https://mp.weixin.qq.com/s/TrRmqkc34Zqw9pgaITqlZg?poc_tokenHF5h1WajXiXCmFpwIbv1HaHN52KsET1UE29CM561 摘取部分核心观点&#xff1a; 站在高观点下看问题&#xff0c;傅里叶变换本质上是…

MySQL表的操作与数据类型

目录 前言 一、表的操作 1.创建一个表 2.查看表的结构 3.修改表 4.删除一个表 二、 MySQL的数据类型 0.数据类型一览&#xff1a; 1.整数类型 2.位类型 3.小数类型 4.字符类型 前言 在MySQL库的操作一文中介绍了有关MySQL库的操作&#xff0c;本节要讲解的是由库管理的结构——…

PointNet++改进策略 :模块改进 | x-Conv | PointCNN, 结合局部结构与全局排列提升模型性能

目录 前言PointCNN实现细节1. X X X-Conv 操作输入输出步骤 2. PointCNN 网络架构层级卷积分类与分割任务 3. 数据增强4. 效率优化 前言 这篇论文介绍了一种名为 PointCNN 的方法&#xff0c;旨在从点云&#xff08;point cloud&#xff09;数据中学习特征。传统卷积神经网络…

华为 HCIP-Datacom H12-821 题库 (9)

有需要题库的可以看主页置顶 V群进行学习交流 1.以下关于 RSTP 保护功能的描述&#xff0c;错误的是哪一选项&#xff1f; A、环路保护可以部署在根端口上&#xff0c;以防网络中形成环路 B、环路保护可以部署在Alternate 端口上&#xff0c;以防网络中形成环路 C、BPDU 保…

“短视频 + ”新业态下的高职院校数字媒体技术专业群建设方案

一、引言 短视频&#xff0c;亦称短片视频&#xff0c;是在移动互联网快速普及背景下兴起的一种新兴媒体形态&#xff0c;它继承了传统影视行业的一些特点并加以创新。相较于传统的文字和图片传播方式&#xff0c;短视频集声音与影像于一体&#xff0c;能够承载更多的信息量&a…

【JAVA开源】基于Vue和SpringBoot的网上订餐系统

本文项目编号 T 018 &#xff0c;文末自助获取源码 \color{red}{T018&#xff0c;文末自助获取源码} T018&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

缓存对象反序列化失败

未定义serialVersionUID&#xff0c;会自动生成序列化号 新增了属性&#xff0c;序列号就变了&#xff0c;导致缓存对象反序列化失败。 所有缓存对象必须指定序列化id&#xff01; 那我如何找到未添加字段前 对象的序列化号呢&#xff1f;默认的序列化号是如何生成的呢&#…

11、Hive+Spark数仓环境准备

1、 Hive安装部署 1&#xff09;把hive-3.1.3.tar.gz上传到linux的/opt/software目录下 2&#xff09;解压hive-3.1.3.tar.gz到/opt/module/目录下面 [shuidihadoop102 module]$ tar -zxvf /opt/software/hive-3.1.3.tar.gz -C /opt/module/ 3&#xff09;修改hive-3.1.3-b…

车辆目标检测数据集 19000张 带标注 voc yolo

数据集名称&#xff1a; 车辆目标检测数据集 数据集规模&#xff1a; 图像数量&#xff1a;19000张标注类型&#xff1a;车辆检测&#xff08;包括但不限于轿车、卡车、公交车、摩托车等&#xff09;格式兼容性&#xff1a;支持VOC和YOLO标注格式 数据集内容&#xff1a; 该…

IP网络广播服务平台任意文件上传漏洞

文章目录 免责声明搜索语法漏洞描述漏洞复现修复建议 免责声明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 搜索语法 icon_hash"-568806419"漏洞描述 该系统在upload接口处可上传任…

SOMEIP_ETS_099: SD_ClientServiceActivate

测试目的&#xff1a; 验证DUT能够在不停止其已运行的服务器模式的情况下&#xff0c;被触发进入客户端模式。 描述 本测试用例旨在确保DUT能够在保持服务器模式运行的同时&#xff0c;启动客户端模式的启动程序&#xff0c;并准备好作为客户端进行操作。 测试拓扑&#xf…

机器人入门系列:《通过蓝牙模块通讯控制机器人电机转动》

一、引言 在现代科技高速发展的今天&#xff0c;机器人技术作为自动化和智能化领域的重要分支&#xff0c;正以前所未有的速度改变着我们的生活和生产方式。其中&#xff0c;无线通信技术作为机器人远程控制的关键技术之一&#xff0c;其重要性不言而喻。蓝牙技术&#xff0c;…

Deepl翻译VS行业TOP3,你的翻译神器是哪款?

现在世界变得越来越小&#xff0c;大家都在用不同的语言交流&#xff0c;这时候翻译工具就特别重要了。不管是搞研究、谈生意&#xff0c;还是平时聊天&#xff0c;翻译软件都超级有用。在这么多翻译工具里&#xff0c;Deepl翻译这样的软件特别受欢迎。咱们今天就来比一比&…

复盘:求职两个月还没找到工作,深刻反思

一、求职反思 复盘下&#xff0c;求职两个月还没找到工作&#xff0c;心态在快崩溃的边缘又被拉回来了。 历经两个月的征途&#xff0c;找工作打招呼和投简历不下百次&#xff0c;用了三个APP&#xff0c;猎聘、boss直聘、智联。真的感觉粥多僧少。从一开始挑公司、薪酬&…

运营商不给降套餐怎么办?建议你这么操作!

订套餐容易改套餐难&#xff0c;这种情况你遇到过没有&#xff1f; 有朋友反馈&#xff0c;因为自己的套餐资费太贵&#xff0c;打运营商客服电话降套餐&#xff0c;结果运营商不不能降套餐怎么办&#xff0c;这种情况会怎么办呢&#xff1f; 如果出现以下几种情况&#xff0…

初识C++|继承

&#x1f36c; mooridy-CSDN博客 &#x1f9c1;C专栏&#xff08;更新中&#xff01;&#xff09; 目录 1. 继承的概念及定义 1.1 继承的概念 1.2 继承定义 1.2.1 定义格式 1.2.2 继承父类成员访问方式的变化 1.3继承类模板 2. 父类和子类对象赋值兼容转换 3. 继承中的…

Excel单元格操作:读写单元格数据、格式设置与条件格式详解

目录 一、Excel单元格的基本操作 1.1 单元格的选取与编辑 案例一&#xff1a;基本数据录入 1.2 单元格的读取与写入 案例二&#xff1a;使用公式计算销售额 二、单元格格式设置 2.1 字体与颜色设置 案例三&#xff1a;设置标题格式 2.2 数字格式设置 案例四&#xff…

大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

【观察】为天府之国数智化转型“架桥铺路”,华为云云商店释放创新“乘数效应”...

作为全国首批国家数字经济创新发展试验区&#xff0c;近年来四川在发展数字经济的道路上可谓“一马当先”。数据显示&#xff0c;2023年&#xff0c;四川省数字经济核心产业增加值达到4899.07亿元&#xff0c;占GDP比重8.1%&#xff0c;数字经济日益成为四川省经济高质量发展的…

电压跟随器的作用是什么?

电压跟随器&#xff08;也称为单位增益放大器、缓冲放大器和隔离放大器&#xff09;是一种电压增益为 1 的运算放大器电路。这意味着运算放大器不会对信号进行任何放大。 之所以称为电压跟随器&#xff0c;是因为输出电压直接跟随输入电压&#xff0c;即输出电压与输入电压相同…