Linux系统运维命令:使用 tail,grep组合命令(包括wc,sort,awk,sed等),可以方便的查阅和操作正在改变的日志文件的具体内容

一、命令介绍

1、tail命令

        tail命令是Linux系统中常用的命令之一,用于查看文件的末尾内容。它具有许多有用的选项,可以帮助用户轻松地查找并显示文件中的信息。 它默认显示文件的最后10行,但可以通过各种选项来定制输出的行数、字节数等。tail命令常用于监视和分析日志文件以及其他随时间变化的文件。一些常用的tail命令选项包括:

  • -n:用于指定要显示的行数。例如,tail -n 20 filename.txt会显示filename.txt文件的最后20行。
  • -f:用于实时追踪文件的更改并输出新增的内容。这对于监视正在写入的日志文件特别有用,如tail -f /var/log/syslog。
  • -c:以字节为单位显示指定范围的内容。例如,tail -c 100M largefile.log会显示largefile.log文件的最后100MB内容。

2、grep命令

       ·grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep命令的全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep命令可以通过各种命令行选项来增强其功能,例如使用-G、-E、-F选项来分别实现类似egrep和fgrep的功能。

        grep命令在Linux系统中被广泛应用,例如在系统日志文件中搜索特定的错误信息,或者在大量的文本文件中查找特定的内容。它也可以与其他命令结合使用,例如通过管道将某个命令的输出作为grep的输入,从而过滤出需要的信息。

二、命令组合的实例

        使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。这个功能广泛应用于程序调试以及流程跟踪等场景,非常实用。

1. 实时跟踪并过滤日志中的错误信息

tail -f /var/log/syslog | grep "error"   

tail -f /var/log/messages | grep "error"

        这个命令会实时跟踪系统日志文件 /var/log/syslog,并只显示包含 "error" 字样的行。这对于快速定位和处理系统错误非常有用。实际效果如下:

[root@ecs-52a1 serverlog]#[root@ecs-52a1 serverlog]# tail -f /var/log/messages | grep "error"Feb 21 22:00:29 ecs-52a1 dnf[3827294]:  File "/usr/lib64/python3.6/site-packages/libdnf/error.py", line 17, in <module>Feb 21 22:00:29 ecs-52a1 dnf[3827294]:    _error = swig_import_helper()Feb 21 22:00:29 ecs-52a1 dnf[3827294]:  File "/usr/lib64/python3.6/site-packages/libdnf/error.py", line 16, in swig_import_helperFeb 21 22:00:29 ecs-52a1 dnf[3827294]:    return importlib.import_module('_error')Feb 21 22:00:29 ecs-52a1 dnf[3827294]: ModuleNotFoundError: No module named '_error'^C[root@ecs-52a1 serverlog]#

2. 跟踪特定用户的登录记录

tail -f /var/log/auth.log | grep "username"

tail -f /var/log/secure | grep "username"

        这个命令会跟踪 /var/log/auth.log 文件(通常是认证日志文件),并只显示包含特定用户名 "username" 的行。这有助于监视特定用户的登录活动。实际效果如下:

[root@ecs-52a1 serverlog]#[root@ecs-52a1 serverlog]#[root@ecs-52a1 serverlog]# tail -n 100 /var/log/secure | grep "yunwei"Feb 21 21:20:00 ecs-52a1 sshd[3040976]: Accepted password for 121yunwei from 153.35.12.24 port 58840 ssh2Feb 21 21:20:00 ecs-52a1 sshd[3040976]: pam_unix(sshd:session): session opened for user 121yunwei by (uid=0)Feb 21 21:20:00 ecs-52a1 sshd[3041691]: Accepted password for 121yunwei from 153.35.12.24 port 17229 ssh2Feb 21 21:20:00 ecs-52a1 sshd[3041691]: pam_unix(sshd:session): session opened for user 121yunwei by (uid=0)Feb 21 21:20:09 ecs-52a1 su[3042919]: pam_unix(su:session): session opened for user root by 121yunwei(uid=1003)[root@ecs-52a1 serverlog]#

3. 分析 web 服务器访问日志中的特定请求

tail -f /var/log/apache/localhost_access_log | grep "GET /specific-page"

        这个命令会跟踪 Apache web 服务器的访问日志,并只显示包含 "GET /specific-page" 字样的行。这对于分析特定页面的访问情况非常有用。实际效果如下:

[root@ecs-52a1 serverlog]# tail -f /usr/apache/logs/localhost_access_log.2024-02-21.txt | grep "GET /webmgr/"
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/css/menu.css HTTP/1.1" 200 1575
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/msg/mymsg.js HTTP/1.1" 200 1432
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/script/LayuiWinUtils.js HTTP/1.1" 200 3152
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/script/LinkMap.js HTTP/1.1" 200 7234
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/script/prototypeExt/StringExt.js HTTP/1.1" 200 310
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/script/forbid.js HTTP/1.1" 200 2288
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/images/btnedit.png HTTP/1.1" 200 1099
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/images/btndelete.png HTTP/1.1" 200 1090
153.35.127.24 - - [21/Feb/2024:23:03:39 +0800] "GET /webmgr/layuiadmin/layui/lay/modules/laypage.js HTTP/1.1" 200 4472^C
[root@ecs-52a1 serverlog]#

4. 实时显示某个进程的日志输出

tail -f /var/log/processofmy.log | grep "important"

        如果有一个名为 processofmy的进程,其日志输出保存在 /var/log/processofmy.log 文件中,这个命令会实时跟踪该日志文件,并只显示包含 "important" 字样的行。实际效果如下:

[root@ecs-52a1 serverlog]# tail -f ./sipserver.log | grep "Register"ProcAuthSuccForRegister:Get Ext Register<32050100001320000035@180.108.95.62:2145> Register KeepAlive Time<300>!ProcAuthSuccForRegister:Get Ext Register<32050100001320000202@180.108.95.62:2081> Register KeepAlive Time<300>!ProcRegister: DBTunnelSoap register successfully to <http://127.0.0.1:8081>.RegisterToUpperPlatform:ToSvr<123.60.149.23:9000 username=admin pass = xxxx>  Expires<3600>.RegisterToUpperPlatform:ToSvr<120.78.93.97:5060 username=32050100002000000001 pass = xxxxxxx>  Expires<3600>.^C[root@ecs-52a1 serverlog]#

5. 监视某个文件的变化,并过滤特定内容

tail -f /mypath/file.txt | grep "pattern"

        这个命令会实时跟踪 file.txt 文件的变化,并只显示包含 "pattern" 字样的行。这对于监视文件内容的变化并筛选感兴趣的部分非常有用。

三、和其他命令组合的实例

1. 使用 tail、grep 和 wc 统计特定日志条目的数量

tail -n 1000 /var/log/app.log | grep "ERROR" | wc -l

        这个命令会首先使用 tail 显示日志文件的最后 1000 行,然后使用 grep 过滤出包含 "ERROR" 的行,最后使用 wc -l 统计这些行的数量,从而得知最近 1000 条日志中有多少个错误条目。

2.使用 tail、grep 和 sort 对日志进行排序

tail -n 1000 /var/log/access.log | grep "GET" | sort -r

        这个命令会跟踪访问日志文件的最后 1000 行,过滤出所有包含 "GET" 请求的行,并使用 sort -r 将这些行按照逆序(从最新到最旧)排列,从而可以查看最近的 GET 请求。

3. 使用 tail、grep 和 awk 提取和处理特定字段

tail -f /var/log/syslog | grep "auth" | awk '{print $2, $3}'

        这个命令会实时跟踪系统日志文件,过滤出包含 "auth" 的行,然后使用 awk 提取每行的第二和第三个字段(默认字段分隔符是空格或制表符),从而仅显示这些字段的内容。

4. 使用 tail、grep 和 sed 进行文本替换

tail -n 100 /var/log/messages | grep "warning" | sed 's/warning/ERROR/g'

        这个命令会显示日志文件中最后 100 行,过滤出包含 "warning" 的行,然后使用 sed 将这些行中的 "warning" 替换为 "ERROR"。这对于将警告级别提升为错误级别非常有用。

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

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

相关文章

十四、图像几何形状绘制

项目功能实现&#xff1a;矩形、圆形、椭圆等几何形状绘制&#xff0c;并与原图进行相应比例融合 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 drawing.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class DRAWING { public:void…

Python笔记-super().init(root)的作用

假设我们有一个名为Animal的父类&#xff0c;它有一个属性color&#xff0c;在其构造函数__init__中被初始化&#xff1a; class Animal:def __init__(self, color):self.color color现在&#xff0c;我们想创建一个Animal的子类&#xff0c;名为Dog。Dog类有自己的属性name&…

QPaint绘制自定义仪表盘组件01

网上抄别人的&#xff0c;只是放这里自己看一下&#xff0c;看完就删掉 ui Dashboard.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomm…

【xss跨站漏洞】xss漏洞前置知识点整理

xss漏洞成因 xss漏洞是一种前端javascript产生的漏洞。 我们网站基本都是会用到javascript编写一些东西&#xff0c;浏览器也能直接识别javascript。 如果有一个地方能够输入文字&#xff0c;但是他又没有过滤你的输入&#xff0c;那么自己或者他人看到你输入的javascript代…

JVM知识——安全点

安全点是JVM要准备进行垃圾回收时&#xff0c;选定一些特定的位置&#xff0c;当应用程序线程执行到这些位置时&#xff0c;安全的先暂停下来&#xff0c;以便JVM执行GC线程进行垃圾回收。 JVM在字节码指令中会选取一些指令作为安全点&#xff0c;安全点的选取一般是循环结束、…

课时42:表达式_运算符_bc计算

3.1.5 bc计算 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 bc是一种任意精度的计算语言&#xff0c;提供了语法结构&#xff0c;比如条件判断、循环等&#xff0c;功能是很强大的&#xff0c;还能进行进制转换。常见参数-…

week04day02(爬虫02)

<span>: 通常用于对文本的一部分进行样式设置或脚本操作。<a>: 定义超链接&#xff0c;用于创建链接到其他页面或资源的文本。<img>: 用于插入图像。<br>: 用于插入换行。 姓名&#xff1a;<input type"text" value"lisi">…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第七天-内核函数接口(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 //************************************************** #include <linux/module.h> /*module_init()*/ #include <linux/kernel.h> /* printk() *…

【析】考虑同时取送和时间窗的车辆路径及求解算法

期刊&#xff1a;computer engineering and applications 计算机工程与应用![c 引言 1. 问题分析 1.1 问题描述 问题描述为&#xff1a; 若干运输车辆从配送中心出发为客户取送货并最终返回配送中心&#xff0c;每位客户仅由一辆车服务一次&#xff0c;车辆在配送过程中任…

rust实战系列八:常量

在Rust中还可以用const关键字做声明。如下所示: const GLOBAL: i32 0; 使用const声明的是常量&#xff0c;而不是变量。因此一定不允许使用mut关键字修饰这 个变量绑定&#xff0c;这是语法错误。常量的初始化表达式也一定要是一个编译期常量&#xff0c;不 能是运行期的值。它…

ChatGPT丨成像光谱遥感技术中的AI革命:ChatGPT应用指南

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用&#xff0c;人工智…

尾矿库排洪系统结构仿真软件WKStruc(可试用)

1、背景介绍 尾矿库作为重大危险源之一&#xff0c;在国际灾害事故排名中位列第18位&#xff0c;根据中国钼业2019年8月刊《中国尾矿库溃坝与泄漏事故统计及成因分析》的统计&#xff0c;在46起尾矿库泄漏事故中&#xff0c;由于排洪设施导致的尾矿泄漏事故占比高达1/3&#x…

c#创建安装windows服务

背景:最近在做设备数据对接采集时,遇到一些设备不是标准的Service-Client接口,导致采集的数据不够准确;比如设备如果中途开关机后,加工的数量就会从0开始重新计数,因此需要实时监控设备的数据,进行叠加处理;考略到工厂设备比较多,实时监听接口的数据为每秒3次,因此将…

外包干了三年,技术算是废了。。。

先说一下自己的个人情况&#xff0c;大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近5年的手工测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的手工…

LeetCode.106. 从中序与后序遍历序列构造二叉树

题目 106. 从中序与后序遍历序列构造二叉树 分析 前面讲过根据前序和中序构建二叉树&#xff1a;博客链接 这道题是告诉我们一颗二叉树的后序和中序&#xff0c;让我们根据后序和中序构造出整颗二叉树。 拿到这道题&#xff0c;我们首先要知道中序的后序又怎样的性质&#…

云上业务一键性能调优,应用程序性能诊断工具 Btune 上线

- 01 - 终于等来了预算&#xff0c;这就把服务迁移到最新的 CPU 平台上去&#xff0c;这样前端的同事立马就能感受我们带来的速度提升了。可是…… 这些性能指标怎么回事&#xff1f;不仅没有全面提升&#xff0c;有些反而下降了。不应该这样啊&#xff0c;这可怎么办&#xf…

使用单一ASM-HEMT模型实现从X波段到Ka波段精确的GaN HEMT非线性仿真

来源&#xff1a;Accurate Nonlinear GaN HEMT Simulations from X- to Ka-Band using a Single ASM-HEMT Model 摘要&#xff1a;本文首次研究了ASM-HEMT模型在宽频带范围内的大信号准确性。在10、20和30 GHz的频率下&#xff0c;通过测量和模拟功率扫描进行了比较。在相同的频…

day05-进程通信

1> 将互斥机制的代码实现重新敲一遍 代码&#xff1a; #include<myhead.h>int num520;//临界资源//1.创建互斥锁 pthread_mutex_t fastmutex;//定义任务函数 void *task1(void *arg){printf("1111111\n");//3.临界区上面获取锁资源&#xff08;上锁&#…

LeetCode每日刷题:101. 对称二叉树

题目&#xff1a; 解题思路&#xff1a;可以新写一个函数&#xff0c;从root开始&#xff0c;root的left的头结点将记为lefttree&#xff08;左子树&#xff09;,root的lright的头结点将记为righttree&#xff08;右子树&#xff09;&#xff0c; 然后递归左子树的root.left与右…

【鸿蒙 HarmonyOS 4.0】TypeScript开发语言

一、背景 HarmonyOS 应用的主要开发语言是 ArkTS&#xff0c;它由 TypeScript&#xff08;简称TS&#xff09;扩展而来&#xff0c;在继承TypeScript语法的基础上进行了一系列优化&#xff0c;使开发者能够以更简洁、更自然的方式开发应用。值得注意的是&#xff0c;TypeScrip…