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.pswp.cn/news/696236.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696236.shtml
英文地址,請注明出處:http://en.pswp.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…