Linux 日志查找常用命令

news2024/9/27 21:29:27

1.1 cat、zcat

  • cat -n app.log | grep "error":查询日志中含有某个关键字error的信息,显示行号。

  • cat -n app.log | grep "error" --color:查询日志中含有某个关键字error的信息,显示行号,带颜色的。

  • cat -n test.log | tail -n +92 | head -n 20 :表示查询92行之后的日志;表示在前面的查询结果里再查前20条记录。

  • cat -n app.log |grep "error" | more:使用more和less命令分页查看日志,空格键翻页。

  • cat -n app.log |grep "error" > temp.txt:把日志保存到文件。

  • zcat shopdiy-job01.jd__shopdiy-job.warn.log-2019-03-25-1.log.gz | gerp "hotelFriendCircle poi":直接查找压缩包里的日志内容

  • gzip -dc app.log.2018-01-11.gz |grep "此次共实际刷数据" | more:不解压直接查看压缩包中的“关键词”信息

1.2 grep

  • grep -E "123|abc" app.log(grep -E "123|abc" app.log --color):查询日志文件app.log中包含 关键字 123 或 包含 关键字 abc 的行。(带颜色)

  • tail -f app.log | grep -E -C20 "123|abcd" --color:实时查看日志,且包含关键字 123 或者 abcd 的行。

  • grep -nE "123|abc" app.log:查询日志文件app.log中包含 关键字 123 或 包含 关键字 abc 的行,显示行号。

  • grep "此次共实际刷数据" app.log:查看日志中的关键字。

  • grep "此次共实际刷数据" app.log | more:查询关键字,并且按空格键翻页。

  • grep -i "magic" app.log :不分大小写的搜索匹配magic。默认情况下是区分大小写的。

  • grep -w "magic" app.log :匹配整个单词而不是字符串的一部分(如匹配“magic”,而不是“magical”)。

  • grep -E "123" app.log:显示app.log中含有关键字"123"的行内容。

  • grep -E -A5 "123" app.log:显示app.log中含有关键字"123"的行内容,以及之后的5行内容。

  • grep -E -B5 "123" app.log:显示app.log中含有关键字"123"的行内容,以及之前的5行内容。

  • grep -E -C5 "123" app.log:显示app.log中含有关键字"123"的行内容,以及之前之后的各5行内容。

1.3 head【头正尾负】

  • head -n 10 app.log(head -n +10 app.log、head 10 app.log):查看日志中的头10行日志。
  • head -n -10 app.log:查看日志中除了尾10行之外的所有日志。

1.4 tail【头正尾负】

  • tail -n 10 app.log(tail -n -10 app.log、tail -10 app.log):查看日志中的尾10行日志。

  • tail -n +10 app.log:查看日志中除了头10行之外的所有日志。

  • tail -f app.log:实时查看日志信息。

  • tail -f app.log |grep "关键词":实时查看日志中含有某个关键词的信息。

  • tail -f app.log |grep -A3 "关键词":实时查看日志中含有某个关键词的信息,该行的前面和后面各多显示3行。比如:tail -f app.log |grep -A3 "此次共实际刷数据"。

  • tail -f app.log |grep "mtUserScore" --color:实时查看app.log日志中的含有关键词“mtUserScore”的日志信息,并且彩色打印。

  • tail -n 20 app.log |grep --color "此次共实际刷数据":查看日志的最后20行并且搜索关键字。

  • tail -fn 100 app.log:循环实时查看最后100行的记录。

  • tail -fn 100 app.log |grep --color "此次共实际刷数据":循环查看最后100行的记录,并且查找关键字。

  • tail -500 /data/applogs/tomcat/catalina.out:查看Tomcat错误日志。

  • tail -f app.log | grep -A50 "randomFlow=" --color:查看后面50行的日志。tail -f app.log | grep -A50 "接口查询结果=" --color

  • tail -f app.log | egrep "repast launchId=|whtOuterCreativeService.generateCreative" --color:命中多个关键字中其中一个即可,注意:| 的前后不能有空格。

  • tail -f app.log | egrep "ERROR|WARN" --color:命中多个关键字中其中一个即可,注意:| 的前后不能有空格。

  • tail -f app.log | egrep "ERROR|WARN" -wc:统计数量,命中多个关键字中其中一个即可,注意:| 的前后不能有空格。

  • grep "modifyBudget" midas-shopdiy-web.access.log | grep "realAccountId=58754220" --color:同时满足两个条件。

  • tail -f nginx.access.log | grep -E "getPaginateList|queryAccounts" --color :匹配多个关键字之一即可

1.5 ps

  • ps -ef |grep java:查看Java进程。

  • ps -ef |grep tomcat:查看Tomcat进程。

  • curl www.baidu.com:查看url能不能使用。

  • ps -ef | grep 8080:查看端口号8080被哪个进程占用。

  • ps -ef | grep redis:查看已经启动所有进程中与字符“redis”相关的进程。

  • ps -ef | grep java:查看已经启动所有进程中与字符“java”相关的进程。

  • ping 192.168.1.122:查看本机能否和IP=192.168.1.122的主机连通。

  • scp -r redis-3.0.0/ 192.168.1.122:/usr/local:如果可以连通,则可以远程传输文件。

  • cp redis.conf /usr/local/redis-cluster/7001:复制文件到指定文件夹。

1.6 Nginx日志查询

  • 应用日志记录的位置:/data/applogs/shopdiy-web/logs

  • tail -f app.log:动态查看应用日志。

  • 应用Nginx日志记录的位置,HTTP请求时长结果查看:/data/applogs/nginx

  • tail -f shopdiy-web.access.log:通过访问页面来动态查看Nginx日志。

1.7 压缩包的解压-压缩

  • gz压缩:app.log-2018-09-22-1.log 文件,执行:gzip app.log-2018-09-22-1.log,被压缩成 app.log-2018-09-22-1.log.gz

  • gz接压缩:app.log-2018-09-22-1.log.gz 文件,执行:gzip -d app.log-2018-09-22-1.log.gz,被解压成 app.log-2018-09-22-1.log

  • gzip -dc app.log.2018-01-11.gz |grep "此次共实际刷数据" | more:不解压直接查看压缩包中的“关键词”信息

1.8 sed

  • 这个命令可以查找日志文件特定的一段 , 也可以根据时间的一个范围查询。

  • sed -n "5,10p" app.log:按照行数——查看日志第5到第10行。

  • sed -n "/2018-04-08 09:40:53.374/,/2018-04-08 10:21:04.812/p" express.log | grep "此次共实际刷数据" :按照时间段——查看两个时间之间的日志,并且显示关键字。其中,时间点一定要在日志中存在,可用:grep -E "2018-04-08 09:40:53.374" app.log --color:来查看时间点是不是存在日志中,带颜色。

1.9 lsof (list open files)

  • lsof -i tcp:查看TCP连接的端口号使用情况

  • lsof -i udp:查看UDP连接的端口号使用情况

  • lsof -i tcp:58528 :(port替换成端口号,比如6379)可以查看该端口被什么程序占用,并显示PID,方便kill

  • lsof -i udp:58529 :(port替换成端口号,比如6379)可以查看该端口被什么程序占用,并显示PID,方便kill

  • kill -9 518:结束进程PID号为518的进程

1.10 netstat

  • netstat -a:列出所有端口

  • netstat -at :列出所有tcp端口

  • netstat -au:列出所有udp端口

  • netstat -l :只显示监听端口

  • netstat -lt :只列出所有监听tcp端口

  • netstat -lu :只列出所有监听udp端口

  • netstat -st:显示 TCP 端口的统计信息

  • netstat -su:显示 UDP 端口的统计信息

1.11 ifconfig

ifconfig:Mac查看本机IP地址。其中的ether是硬件mac地址,inet是IP地址。另,可以参考这个知道:https://jingyan.baidu.com/article/b0b63dbf3fefd14a48307013.html

1.12 查看日志文件大小和查看指定关键词

(1)wc -c app.log:参数 -c 表示统计字符,因为一个字符是一个字节,所以这样得到字节数。

(2)du -sb app.log:参数 -b 表示以B计数。

(3)du -sm app.log:参数 -m 表示以M计数。

(4)du -sh app.log:参数 -h 表示以K/M/G计数,容易识别出文件大小 。

cd /data/applogs/nginx
ls -al
du -sh dp-nginx.access.log
查看这个文件中这个关键词被调用地方:
cat dp-nginx.access.log | grep "queryAccountBalance"
查看这个文件中这个关键词被调用的数量:
cat dp-nginx.access.log | grep "queryAccountBalance" | wc -l
查看这些文件中这个关键词被调用的数量:
cat dp-nginx.access* | grep "queryAccountBalance" | wc -l

另:less app.log使用:

(1) cd /data/applogs/shopdiy-cpc-job/logs
(2) ls -al
(3) 分页加载日志数据:less app.log
(4) 此时,shift+GG 命令进入文件尾部,然后输入 shfit+?,并且后面跟随你想要搜索的关键词,比如 ?NewCheckEntityStatusJob,回车,此时你想要看到的关键词都会加亮显示,供你查阅。
此时,N 是逐个向上翻阅;shift+N 是逐个向下翻阅。Q 是退出日志界面。

1.99 杂家笔记

  • less log.log:shift + GG 命令到文件尾部,然后输入 ?加上你要搜索的关键字例如 ?1213 shift+n 关键字之间进行切换。

  • tac:则是由最后一行到第一行反向在萤幕上显示出来,与cat反过来。

  • history:所有的历史记录

  • history | grep XXX:历史记录中包含某些指令的记录

  • history | more:分页查看记录

  • history -c:清空所有的历史记录

  • uname -a:查看内核/操作系统/CPU信息

  • cat /proc/cpuinfo:查看CPU详细信息

  • hostname:查看计算机名称

  • env:查看系统环境变量

  • free -m:查看内存使用量、查看交换区使用量

  • df -h:查看各分区使用量

  • du -sh 目录名:查看指定目录的大小

  • du -sh 文件名:查看指定文件的大小

  • grep MemTotal /proc/meminfo:查看计算机是多大内存,常用的是8G=8388608kB

  • grep MemFree /proc/meminfo:查看计算机还剩余多少内存

  • uptime:查看系统运行时间、用户数量、负载

  • ifconfig:查看所有网络接口的属性

  • netstat -lntp:查看所有监听的端口号

  • ps -ef:查看所有进程

  • top:实时显示进程状态

  • last:查看用户登录这台机器的日志

  • rpm -qa:查看系统上安装的所有的软件包

  • wc app.log:app.log文件的统计信息 3、92、598 app.log。app.log 文件的行数为3、单词数92、字节数598。

正则表达式

grep:grep详解

# grep默认是区分大小写的,这里将匹配所有的小写字母: $ echo '1234\nabcd' | grep '[a-z]' 
# 将匹配所有的数字: $ echo '1234\nabcd' | grep '[0-9]' 
# 将匹配所有的数字 :$ echo '1234\nabcd' | grep '[[:digit:]]' 
# 将匹配所有的小写字母 :$ echo '1234\nabcd' | grep '[[:lower:]]' 
# 将匹配所有的大写字母 :$ echo '1234\nabcd' | grep '[[:upper:]]' 
# 将匹配所有的字母和数字,包括0-9,a-z,A-Z :$ echo '1234\nabcd' | grep '[[:alnum:]]' 
# 将匹配所有的字母 :$ echo '1234\nabcd' | grep '[[:alpha:]]'
cat 1.txt | grep "[0-9]"
cat 1.txt | grep "[[:digit:]]"
cat 1.txt | grep "[[:alpha:]]"
cat 1.txt | grep "[[:upper:]]"
cat 1.txt | grep "[[:lower:]]"
cat 1.txt | grep "[[:alnum:]]"

grep简介

grep:Gloabal Search Regular Expression and Print out the line,意为全局搜索正则表达式并打印文本行。所以

  • grep是一个强大的文本搜索工具。

  • grep与正则表达式联系紧密。

之后也会从这两个大的方面来详细介绍。grep命令的基本语法如下:grep [options] pattern [file...]

  • options表示选项,具体的命令选项见下表。

  • pattern表示要匹配的模式(包括目标字符串、变量或者正则表达式)。

  • file表示要查询的文件名,可以是一个或者多个。pattern后面所有的字符串参数都会被理解为文件名。

选项说明
-c只打印匹配的文本行的行数,不显示匹配的内容
-i匹配时忽略字母的大小写
-h当搜索多个文件时,不显示匹配文件名前缀
-n列出所有的匹配的文本行,并显示行号
-l只列出含有匹配的文本行的文件的文件名,而不显示具体的匹配内容
-s不显示关于不存在或者无法读取文件的错误信息
-v只显示不匹配的文本行
-w匹配整个单词
-x匹配整个文本行
-r递归搜索,搜索当前目录和子目录
-q禁止输出任何匹配结果,而是以退出码的形式表示搜索是否成功,其中0表示找到了匹配的文本行
-b打印匹配的文本行到文件头的偏移量,以字节为单位
-E支持扩展正则表达式
-P支持Perl正则表达式
-F不支持正则表达式,将模式按照字面意思匹配

grep简单应用场景

首先介绍一下我的实验环境,在/Users/cmm/test4MingLing下建立3个简单的txt文件:

#----------------------/Users/cmm/test4MingLing/text1.txt--------------------- 
  hello world 
  mailx 
  uuen 
  letitia 
  #----------------------/Users/cmm/test4MingLing/text2.txt--------------------- 
  hello world,this is for grep test  
  #----------------------/Users/cmm/test4MingLing/text3.txt--------------------- 
  hello world 
  tyrone

(1)多文件查询,file之间用空格隔开。

grep -i "hello world" text1.txt text2.txt
#输出结果
text1.txt:hello world
text2.txt:hello world,this is for grep test

(2)多模式匹配,模式之间为“逻辑或”的关系,匹配任意一个即可返回。

#方法1:使用-e选项 
grep -e "hello world" -e "mailx" -r /Users/cmm/test4MingLing
#方法2:使用正则表达式,-E
grep -E "hello world|mailx" -r /Users/cmm/test4MingLing
#方法3:使用正则表达式,egrep,同grep -E等效 
egrep "hello world|mailx" -r /Users/cmm/test4MingLing --color
#输出结果均相同: 
/Users/cmm/test4MingLing/text1.txt:hello world
/Users/cmm/test4MingLing/text1.txt:mailx
/Users/cmm/test4MingLing/text2.txt:hello world,this is for grep test
/Users/cmm/test4MingLing/text3.txt:hello world

(3)多模式匹配,模式之间为“逻辑与”的关系,匹配所有模式。
基本思想大致相同:先匹配一个模式,然后grep下面一个模式,将前一次grep的结果作为要查询文件路径依次向后传递。

PS:注意:前一次grep的结果必须加上 -l 选项,否则会把匹配成功的文件内容作为要查询的文件名向后传递。

我希望做到的是能够显示出同时包含模式的文件,并且跟随显示匹配每个模式的内容。可惜我现在找到的方法都仅仅能够显示匹配最后一个模式的内容。

#方法1:将其按一次的结果重定向到一个文件,然后 xargs grep 来依次读取。 
grep -i "hello world" -rl /Users/cmm/test4MingLing >> temp.txt
cat temp.txt |xargs grep -i "mailx"
#输出结果 
/Users/cmm/test4MingLing/text1.txt:mailx
 
#方法2:直接利用管道 
grep -i "hello world" -rl /Users/cmm/test4MingLing | xargs grep -i "mailx"
#输出结果 
/Users/cmm/test4MingLing/text1.txt:mailx

最后不得不感慨一下linux命令的组合方式,能像积木一样堆积出无穷的组合,是时候展现真正的想象力了。。。

(4)查找指定用户的进程
ps 是查看当前进程的指令,e 表示所有进程,f 表示全格式。

ps -ef |grep "cmm"
ps -ef |grep "cmm"
#输出结果 
  502   700     1   0  9:08上午 ??         0:00.03 /Applications/Google Chrome.app/Contents/Versions/70.0.3538.110/Google Chrome Framework.framework/Helpers/crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --database=/Users/cmm/Library/Application Support/Google/Chrome/Crashpad --metrics-dir=/Users/cmm/Library/Application Support/Google/Chrome --url=https://clients2.google.com/cr/report --annotation=channel= --annotation=plat=OS X --annotation=prod=Chrome_Mac --annotation=ver=70.0.3538.110 --handshake-fd=9
    0   838   837   0  9:19上午 ttys001    0:00.02 login -pf cmm
    0  6133   837   0  2:28下午 ttys003    0:00.03 login -pf cmm
  502  7467  6134   0  3:54下午 ttys003    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn cmm

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

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

相关文章

基于Detectron2模型和深度学习方法的改进森林火灾检测方法

1.文章信息本次介绍的文章是来自韩国科研团队的一篇2023年火灾检测文章,文章立足于森林火灾检测,题目为《An Improved Forest Fire Detection Method Based on the Detectron2 Model and a Deep Learning Approach》。2.摘要随着全球变暖和人口的增加&am…

【java】真正理解NIO

文章目录前言1、线程不够用, 就算使用了线程池复用线程也无济于事;2、阻塞I/O模式下,会有大量的线程被阻塞,一直在等待数据,这个时候的线程被挂起,只能干等,CPU利用率很低,换句话说,系统的吞吐量差;3、如果网络I/O堵塞或者有网络抖动或者网络故障等,线程的阻塞时间可能很长。整…

Spring boot实现热部署

1.说明 在我们进行Spring Boot项目的编写过程中,会有局部的代码,发生一些变动,这时候,我们只有将项目重启,发生变动的代码才能够生效,为了解决这个问题,我们可以设置Spring Boot热部署&#xf…

React Hooks之useRef详解

一、什么是useRef const refContainer useRef(initialValue); useRef 返回一个可变的 ref 对象,其内部只有一个 current 属性被初始化为传入的参数(initialValue)useRef 返回的 ref 对象在组件的整个生命周期内持续存在更新 current 值时并不…

Java 洛谷 P1739 表达式括号匹配

题目描述: 题目链接:https://www.luogu.com.cn/problem/P1739 代码实例: import java.util.Scanner; import java.util.Stack;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);String…

本地生成动漫风格 AI 绘画 图像|Stable Diffusion WebUI 的安装和部署教程

Stable Diffusion WebUI 的安装和部署教程1. 简介2. Windows安装环境3. 运行4. 模型下载链接5. 其他资源1. 简介 先放一张WebUI的图片生成效果图,以给大家学习的动力 :) 怎么样,有没有小小的心动?这里再补充一下&…

Linux文件系统中的硬链接及常见面试题

如果能对inode的概念有所了解,对理解本文会有所帮助。如果对inode的概念不太清楚也没有关系,我们会捎带介绍一下。在文件系统的实现层面,我们可以认为包含两个组件:一个是包含数据块的池子,池子中的数据块是等大小的&a…

K3S 系列文章-5G IoT 网关设备 POD 访问报错 DNS ‘i/o timeout‘分析与解决

开篇 《K3s 系列文章》《Rancher 系列文章》 问题概述 20220606 5G IoT 网关设备同时安装 K3S Server, 但是 POD 却无法访问互联网地址,查看 CoreDNS 日志提示如下: ... [ERROR] plugin/errors: 2 update.traefik.io. A: read udp 10.42.0.3:38545-&…

进程间通信(重点)

概念 进程是一个独立的资源分配单元,不同进程之间的资源是独立的进程并非孤立的,不同进程需要进行信息的交互和状态的传递,因此需要进程之间的通信【IPC: Inter processes communication】 如qq聊天,qq在每个人的手机上是独立的…

记录--滚动视差动画和解决方法

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最简单的代码,最极致的享受,主打的就是一个炫酷~ 滚动视差 滚动视差效果(Parallax Scrolling)是指让多层背景以不同的速度位移,形成立体的运动效果的视觉…

代码随想录算法训练营第三天 | 链表理论基础 、203.移除链表元素、707.设计链表、206.反转链表

打卡第三天,今天还是认真做了两道题目,明天要6点早起,想早点睡,加上昨天的螺旋数组(昨天想到怎么做,但是代码实现解不出来,还没有仔细看视频讲解),和今天的设计链表&…

内网渗透(三十九)之横向移动篇-pass the ticket 票据传递攻击(PTT)横向攻击

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

Pytorch 物体检测 App 体验

物体检测 App 介绍 它是使用 YOLOv5 进行对象检测的 Android 示例应用程序,使用 PyTorch 脚本化 YOLOv5 模型来检测使用该模型训练的 80 个物体对象。 YOLO(You Only Look Once)是最快和最受欢迎的对象检测模型之一,而YOLOv5 是…

pytorch零基础实现语义分割项目(三)——语义分割模型(U-net和deeplavb3+)

文章目录项目列表前言U-net模型概况下采样过程上采样过程模型代码上采样代码U-net模型构建deeplabv3模型概况模型代码resNetASPPdeeplabv3模型构建结尾项目列表 语义分割项目(一)——数据概况及预处理 语义分割项目(二)——标签…

简单的组合拳

前言:在最近的wxb举行hw中,同事让我帮他看看一些后台登录站点。尝试了未授权,弱口令皆无果,要么不存在弱口令,要么有验证码,没办法绕过。本文章仅提供一个思路,在hw中更多时候并不推荐尝试这种思…

如何正确使用 钳位二极管

在电路设计中,经常遇到需要IO保护的场景,比如ADC采样,GPIO接收电平信号等。 常见的保护方法有分压,限幅,限流等。本次我们讨论限幅方法中的 钳位二极管。 我们以BAT54S为例,它的符号是这样的, 而在很多手册里,我们可以看到,一般是这样使用的: 因此,我设计了简化…

第五章.与学习相关技巧—正则化,超参数

第五章.与学习相关技巧 5.4 正则化&超参数 在机器学习中,过拟合是一个很常见的问题。过拟合指的是只能拟合训练数据,但不能很好的拟合不包含在训练数据中的其他数据状态。 1.发生过拟合的原因 模型拥有大量参数,表现力强。训练数据少。…

使用梯度下降的线性回归(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 梯度下降法,是一种基于搜索的最优化方法,最用是最小化一个损失函数。梯度下降是迭代法的一种,可以用于求…

【办公类-16-05-04】“2022下学期 大班运动场地分配表-跳过节日循环排序”(python 排班表系列)

样例展示:跳过节日的运动场地循环排序表(8个班级8组内容 下学期一共20周)背景需求:上学期做过一次大班运动场地安排,跳过节日。2023.2下学期运动场地排班(跳过节日)又来了。一、场地器械微调二、…

哪里可以找到免费的 PDF 阅读编辑器?7 个免费 PDF 阅读编辑器分享

如果您曾经需要编辑 PDF,您可能会发现很难找到免费的 PDF 编辑器。幸运的是,您可以使用在线资源来编辑该文档,而无需为软件付费。 在本文中,我将介绍七种不同的 PDF 编辑器,它们至少可以让您免费编辑几个文件。我通过…