sed -n "29496,29516p" service.log:从29496行开始检索,到29516行结束
在工作中常用的Linux命令
前言
只有光头才能变强。
文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y
之前写过一篇 《 在公司做的项目和自己在学校做的有什么区别? 》不知道大家还有印象没有,里面提到了在工作中可能需要等上Linux服务器,查看一些信息(特别是查日志找Bug)。
我在大学的时候也有过Linux的课程,在期间也做过Linux相关的笔记:
但是,在学校学完,没咋练手(还是太菜了),去到公司可以说是全忘光了。这篇文章主要来回顾以前的笔记,以及记录一下在工作中比较常用的一些命令。
- 我这肯定是以我现在的维度来考量的,我工作时长比较短,所以可能会有很多命令会忽略掉了,欢迎在评论区补充
一、查看日志
线上出现了问题,登上线上的机器查日志是非常常见的操作了。我第一次登上线上机器查日志的时候,我还只记得以下的几个命令(假设现在我们的日志文件叫做service.log):
cat service.logtail -f service.logvim serivice.log- (明显是不够用的)
现在日志每天产出的大小大概1GB:
如果是小文件的话,单纯的cat命令还是可以应付的,但如果你直接用cat命令打开一个1GB的日志文件,保证卡死你(ctrl + c退出cat命令需要很久才能将cat命令停下来)。
- 一般我只用
cat来查看这个小文件的文本内容是什么
同样地,如果是小文件,单纯的vim命令去打开文件也是可以应付的,但如果你用vim命令去打开一个1GB甚至更大的文件,也能明显感受到缓慢和卡顿。
平时我还是很喜欢用vim去查找对应的记录的,我一般的操作:
vim service- 按
G跳转到文件的末尾 - 按
?+关键字搜索对应的记录 - 按
n往上查询,按N往下查询
tail -f service.log 这个命令我一般用于查看流量是否进来了(或者调试的时候可以直接看到日志,再迅速ctrl +c关掉)
面对比较大的日志文件,这我们就得配合grep来玩了,比如我们现在得知某个手机号收不到短信验证码,想要看一下这个手机号的日志是怎么样的。于是我们就可以这样搞:
cat service.log | grep 13888888888
这么一搞,就能将service.log中所有含有13888888888的记录给搜出来,搜索的速度还是贼快的。
现在我们已经能根据关键字搜到对应的记录了,接着我想看一下那条记录的日志上下文【这样就能知道这条数据大概的执行状态了】
首先,我们先要查出对应记录的行号,在cat 命令后面加上一个 -n 参数就好了。所以命令是:cat -n service.log | grep 13888888888 ,如下图我们就可以查到对应的行号了
现在行数是29506,我们一般只要看一下29506的前10行和后10行就差不多知道问题出现在哪了,于是我们可以这样做:
sed -n "29496,29516p" service.log:从29496行开始检索,到29516行结束cat -n service.log | tail -n +29496 | head -n 20:从29496行开始检索,往前推20条
如果关键字不太准确(日志输出的记录太多了),我们可以使用more命令来浏览或者输出到文件上再分析:
cat service.log | grep 13 |more:将查询后的结果交由more输出cat service.log | grep 13 > /home/sanwai/aa.txt将查询后的结果写到/home/sanwai/aa.txt文件上
有的时候,我们想统计这个日志输出了多少行,我们可以使用这条命令:
cat service.log | wc -l
参考资料:
二、查进程和端口
查进程有两个命令:
ps -efps aux
上面两个命令都是列出所有的进程,我们还是通过 |管道和grep 来过滤掉想要查的进程,比如说:ps -ef |grep java
把进程查出来干嘛?知道它的进程ID了,我们可以把他给杀掉。
kill -9 processId:杀掉某个进程
查端口也是一个很常见的操作,常见命令:netstat -lntup:
l:listening n:num t:tcp u:udp p:display PID/Program name for sockets
查看当前所有tcp/udp端口的信息
查看某个端口详细的信息:lsof -i:4000
三、查看系统的状态
3.1 TOP实时查看进程的状态
TOP命令查看进程的状态,其中有个load average可能不是那么好理解,下面来解释一下:
load average:在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。
load average 有三个值,分别代表:1分钟、5分钟、15分钟内运行进程队列中的平均进程数量。
- 正在运行的进程 + 准备好等待运行的进程 在特定时间内(1分钟,5分钟,10分钟)的平均进程数
Linux进程可以分为三个状态:
- 阻塞进程
- 可运行的进程
- 正在运行的进程
比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5,load average就是一定时间内的load数量均值。
3.2free查看内存使用状况
linux的内存管理机制的思想包括(不敢说就是)内存利用率最大化,内核会把剩余的内存申请为cached,而cached不属于free范畴。
如果free的内存不够,内核会把部分cached的内存回收,回收的内存再分配给应用程序。所以对于linux系统,可用于分配的内存不只是free的内存,还包括cached的内存(其实还包括buffers)。
- 可用内存=free的内存+cached的内存+buffers
Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。磁盘的操作有逻辑级(文件系统)和物理级(磁盘块)
参考资料:
最后
我工作时长比较短,所以可能会有很多命令会忽略掉了,欢迎在评论区补充比较常用的命令。后续如果某些命令比较重要的,我再分享哈~
乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!
觉得我的文章写得不错,点赞!
收藏 15 赞赏
sed -n "29496,29516p" service.log:从29496行开始检索,到29516行结束的更多相关文章
- 错误:One or more post-processing actions failed. Consult the OPP service log for details
今天在做采购出入库明细报表的时候,有的时候能正常打印,有的时候报 One or more post-processing actions failed. Consult the OPP serv ...
- Android学习笔记——log无法输出的解决方法和命令行查看log日志
本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论. 欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai/p/3983936.html. 知识 ...
- sed系列:行或者模式匹配删除特定行
“p” command prints the buffer (remember to use -n option with “p”) “d” command is just opposite, its ...
- 在工作中常用的Linux命令
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 之前写过一篇 < 在公司做的项目和自己在学校做 ...
- 蘑菇街工程师常用的Linux命令!
一.查看日志 线上出现了问题,登上线上的机器查日志是非常常见的操作了.我第一次登上线上机器查日志的时候,我还只记得以下的几个命令(假设现在我们的日志文件叫做service.log): cat serv ...
- sed命令基本用法
sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑sed 适用于以下三种场合:编辑相对交互式文本编辑器而言太大的文件编辑命令太复杂,在交互式文本编辑器中难以输入的情况对文本扫描一遍,但是 ...
- 记录工作中linux相关操作
在项目部署之后,查看日志能查看部署结果是否正确部署. 最开始查看日志我会使用cat service.log tail -f service.log vim service.log 打开日志之后 /+查 ...
- tail -fn 1000 test.log | grep '关键字' 按照时间段 sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件
Linux 6种日志查看方法,不会看日志会被鄙视的 2020-02-11阅读 7.3K0 作为一名后端程序员,和Linux打交道的地方很多,不会看Linux日志,非常容易受到来自同事和面试官的嘲讽 ...
- gitlab svlogd runsv 基于Rotated Log的日志统计
小结: 1. 日志轮询 log roate 日志文件自动转存和重命名 2. rotated log独立于其他模块,可以以静态库或者动态库的形式支持二次开发: 3. [root@d1 ~]# gitla ...
随机推荐
- python工业互联网应用实战11—客户端UI
这个章节我们将演示用户端界面的开发,当前演示界面还是采用先实现基本功能再逐步完善的"敏捷"模式.首先聚焦在功能逻辑方面实现普通用户与系统的交互,普通用户通过url能查看到当前任务的 ...
- 给我一个shell我能干翻你内网
0x00 前言 在去年小菜鸡学了点内网知识就闲着没事跑点jboss的站看看,在经历过很多次内网横向失败之后终于算是人生圆满了一把,阿三的站一般进去之后很难横向,不知道是不是我太菜的原因,反正阿三的站能 ...
- 安全开发Java:日志注入,并没那么简单
摘要:当web工程比较大,历史代码较多时, 应当使用log4j2框架的能力来修改日志注入问题,而不是按照有些博文里写的逐个进化参数的方式. 案例故事 某个新系统上线了,小A在其中开发了个简单的登录模块 ...
- GoF设计模式合集
1 概述 这篇文章是对GoF23种设计模式+1种非GoF模式的合集,由笔者自己的笔记整理而来,每个模式都详细描述了步骤,角色等,以及使用Java实现的具体的例子. 2 基础 设计模式概述 UML与面向 ...
- 谈谈SSRF漏洞挖掘
最近看了很多ssrf漏洞挖掘技巧和自己以往挖掘ssrf漏洞的一些技巧和经验,简单的总结下: 之前自己总结的: ssrf=服务器端请求伪造 基于服务器攻击 url链接 -->内网漫游/内网服务探测 ...
- 【接口设计】用户积分排行榜功能-Redis实现
一.排行榜功能简介 排行榜功能是一个很普遍的需求.使用 Redis 中有序集合(SortedSet)的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如交通数据流中的路口/路段的车流量 ...
- 怎样用SQL修改某个字段的部分内容
方法:update dede_addonarticle set body = replace(body,'#p#分页标题#e#',' ') where body like '%#p#分页标题#e#%'
- windows内核开发环境的简易搭建
一.windows内核开发需要的软件 1.WDK 2.WinDbg 3.virtualKD 4.DebugView 5.Visual C++ 6.0 6.VMware Workstation 二.wi ...
- 从苏宁电器到卡巴斯基(后传)第05篇:聊聊我对WannaCry产生的感慨
这几天看到网上对WannaCry勒索病毒讨论得沸沸扬扬,不免有些感触. 其实该病毒的这次爆发,完全可以类比N年前"熊猫烧香"爆发的情况.也就是国内杀软纷纷歇菜,让本来就没什么技术含 ...
- hdu3400 两重三分
题意: 题意给你两个公路 A-B C-D 和三个速度V(ab) V(cd) 和 V(两条公路之间) 问你从A到D的最短时间是多少. 思路: 一开始暴力了其中的一条边,每次加0.01,另 ...