前言
通过这篇文章你将收获:netstat、grep、awk、sed、wc 五个命令的简单使用
查看进程
在重启服务前,需要查看当前服务的进程,假设进程的端口号为6666
#统计某端口正在监听的进程数 netstat -lntp | grep 6666 | awk '{print $7} '| sed -e 's/\/java//g' |wc -l
下面,简单看看这条命令做了什么(若想了解更多,可点击绿色小标题):
netstat
netstat(英文全拼:net status ):查看Linux网络状态
#查看Linux当前正在监控的tcp协议,并将域名使用ip显示,显示相应的程序id和名字 netstat -lntp
常用选项:
-l(-listening) 显示监控中的服务器的Socket
-n(-numeric) 直接使用IP地址,而不通过域名服务器
-t(-tcp) 显示TCP传输协议的连线状况
-u(-udp) 显示UDP传输协议的连线状况
-p(-programs) 显示正在使用Socket的程序识别码和程序名称
grep
grep :查找符合条件的信息。
#1.查看Linux当前正在监控的tcp协议,并将域名使用ip显示,显示相应的程序id和名字 #2.筛选出包含'6666'的行 netstat -lntp|grep 6666
常用选项:
-n (-line-number):行号,即在显示前先标示出该行的编号
-i (-ignore-case):忽略, 忽略字符大小写
-v (-invert-match):反转,即显示不包含匹配文本的所有行。
-c (-count):计算,计算符合样式的行数。
-E (-extended-regexp):拓展,将样式为延伸的正则表达式来使用。(等效egrep)
--color :上色,将匹配上的部分着色显示,两个-
awk
awk主要用于格式化输出;常用来筛选列。
#输出文本中的第7列 awk '{print $7}' # 什么参数也不加,默认按 “空格或TAB” 分割;print:输出 $7:第7列,注意''和{}
常用选项
-F (-field separator fs)指定分隔符,即分隔符fs是一个字符串或者是一个正则表达式,用它去拆分列。
# 使用","分割,输出log.txt文本中的第1,第2列 awk -F, '{print $1,$2}' log.txt
更多语法
# 语法格式 # awk -可选项 ‘模式{操作语句}’ 文件 awk [option] 'PATTERN{ACTION STATEMENTS}' FILE #awk按照行来读取文档,根据输入分隔符切分成小部分($0,$1,$2等),$0表示显示整行。 #用ACTION STATEMENTS来处理该行文本。
sed
sed全称为Stream EDitor,sed是一个流编辑器,在处理行内容时功能十分强大。主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
#将'/java'替换成‘’后输出 sed -e 's/\/java//g' # 思路: # sed 's/要被取代的字串/新的字串/g' 替换 # -e 使用正则,因为/java的‘/’需要转义‘\/’
语法
# sed -h 帮助 -V版本 -n 安静(silent)模式 -e'多点编辑脚本' -f'脚本文件' sed [-hnV][-e][-f][文本文件]
常用参数:
-e(-expression=):以选项中指定的script来处理输入的文本文件。
-f(-file= ):以选项中指定的script文件来处理输入的文本文件。
-n(-quiet-silent ):仅显示script处理后的结果。
常用动作(script脚本里):
查:
-p (print):打印,亦即将某个选择的数据印出。通常 sed -n 'p'
# 如果不加n,会先输出匹配行,再输出所有行;加了n只输出匹配行,效果等同grep;(OS:安静的美男子不想多说) #显示文件内的第 5-7 行 sed -n '5,7p' #显示有root关键字的行 sed -n '/root/p' #查询日志-1点的日志 sed -n '/ 01:00*/p' catalina.out #查询某个时间段的日志 sed -n '/starttime/,/endtime/p' catalina.out
改:
-s(substitute) :取代,将匹配值替换为新值,sed -e 's/原先值/新值/g',通常s 的动作可以搭配正规表示法。
替换标记:
g 行内全局替换 p 显示替换成功的行 w /PATH/TO/SOMEFILE 将替换成功的行保存至文件中
-c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
增:
-a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
-i (insert):插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
删:
-d (delete):删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
wc
wc(wrod count)命令用于计算数目。
#统计有多少满足条件的行 wc -l #常用语法: #wc [-lwc][--help][--version][文件...] #如果什么参数都不加,按行数、字数、bety数依次显示
利用wc指令我们可以计算文件的Byte数、字数、行数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
常用参数:
-l(-lines)行数, 即只显示匹配的行数
-w(-words )字数,只显示匹配的单词数。
-c(-bytes -chars) 字节数,即只显示Bytes数、字节数。
简单总结
假装总结一波:今天用一行查看进程的命令,认识了五个shell命令(记住多个命令间需带''|'')
1.通过netstat命令,先查出网络状态,netstat -lntp
2.用grep筛选端口号匹配的行,grep 端口号
3.再用awk筛选进程号那一列,awk ‘{print,$列号}’
4.用sed将结果替换成想要的部分内容,sed -e 's/要被取代的字串/新的字串/g'
5.最后用wc统计行数;wc -l
希望能让您先初步地认识到Linux三剑客的威力!如果想让这把剑变得更锋利,我们需要进一步了解其他参数以及正则表达式的使用。推荐博客:Linux三剑客