目录
步骤1 系统巡检基本命令
CPU
内存
磁盘
进程
网络、流量
步骤2 shell脚本编写
awk
awk常用内置变量
awk正则
实例一
实例二
实例三
实例四
实例五
sed
选项与参数
例一
例二
例三
例四
例五
例六
例七
grep
主要参数
常用用法
例一
例二
例三
例四
例五
例六
例七
例八
正文开始!!!
步骤1 系统巡检基本命令
CPU
top
vmstat 2.5
sar 2.5
uptime
grep -c 'model name' /proc/cpuinfo 查看CPU核数
内存
free –m
top
vmstat 2.5
sar -r 2.5
磁盘
yum install iotop –y
iotop
iostat
iostat –x
sar –d –p 2.5
进程
ps –elf
pidof
ps –aux
pstree
lsof
网络、流量
sar -n DEV 1 2
iftop
先编译安装libpcap
再编译安装iftop
步骤2 shell脚本编写
文本三剑客awk、sed、grep
awk
awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。 awk 是三剑客的老大,利剑出鞘,必会不同凡响。
尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
{ print }代码块。在 awk 中,花括号用于将几块代码组合到一起,这一点类似于 C 语言。在代码块中只有一条 print 命令。在 awk 中,如果只出现 print 命令,那么将打印当前行的全部内容。再次说明, awk 对输入文件中的每一行都执行这个脚本。
awk常用内置变量
awk正则
实例一
查看磁盘使用情况的第2,3,4 列
df -h |awk '{print $2 "\t" $3 "\t" $4}'
实例二
用 ifconfg 获取本机IP地址(结果只显示IP地址)
ifconfig ens33 |grep "inet " | awk '{ print $2}'
实例三
前面加BEGIN 在输出前可以输出一句话test
awk 'BEGIN{print "hello everyone !!!"} {print $1 "\t" $2}' info.txt
实例四
FS 指定分隔符
将passwd的 ‘:’换成制表符
awk '{FS=":"}{print $1 "\t $3"}' passwd
实例五
END 所有命令执行完在输出一个命令
awk 'BEGIN{print "hello everyone!!!"}END{print "goodbye!!!"} {print $1 "\t" $2}' info.txt
sed
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
[root@www ~]# sed [-nefr] [动作]
选项与参数
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。
动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』
function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除,所以 d 后面通常不接任何东西;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!例如 s/old/new/g 就是!
例一
查看文件的第二行
sed -n '2p' passwd
cat passwd | sed -n '2p'
例二
删除 第二行到第四行的数据但不修改文件本身
sed '2,4d' passwd
例三
追加在第二行后面追加hello
sed '2a hello' passwd
例四
在第二行前插入hello
sed '2i hello' passwd
例五
把第一行替换成 hello
sed '1c hello ' passwd
例六
字符串替换
sed ‘s/旧字串/新字串/g ’ 文件名
把第一行的root换成hello
sed '1s/root/hello/g' passwd
例七
把sed操作写入文件
sed -i '1s/root/hello/g' passwd
cat passwd
hello:x:0:0:hello:/hello:/bin/bash
grep
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
主要参数
常用用法
例一
将passwd 中,出现root的那一行行显示出来
cat passwd |grep root
例二
将passwd 中,出现root的那一行行显示出来,不显示整行
cat passwd |grep -o root
例三
与范例一相反只要没有‘root’就取出
cat passwd |grep -v root
例四
查看进程,加-v和不加区别
ps -elf | grep nginx
ps -elf | grep nginx | grep -v "grep"
例五
统计包含var的行
grep -i "var" passwd|wc -l
例六
显示以a开头的行
cat passwd|grep ^a
例七
显示以a或者g开头的行
cat passwd|grep ^[ag]
例八
显示IP
ip a|grep ens|grep inet