Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁;Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
第一行通常指定脚本解释器
#!/bin/bash
1..从日志定位问题,进行排序
sort 默认是以ascII字符为依据排序,数字的话得用-n -r 降序排列 -u 去除重服 -k 以第几列为以准排序
cat x.log|sort -t " " -k2
2.查看cpu和内存前10
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
3.根据访问数量进行排序
awk -F " " '{print $1}' bs.service.access.log|sort|uniq -c|sort -n
4.批量kill进程
ps aux|grep gzip|awk '{print $2}'|xargs kill -9
5.获取向脚本传递的参数
while getopts "s:" arg
do
case $arg in
m) usage;;
h) usage;;
?) usage;;
esac
done
6.批量读取文件并且赋值给变量
while
read
line
do
grep
-q
"$line"
2.txt
[ $? -
eq
0 ] &&
echo
"$line [contained in 2.txt]"
done
<1.txt
6.AWK脚本
awk -F分隔符 'BEGIN { 初始化 } { 循环执行部分 } END { 结束处理 }' file_list1 file_list2
awk 'NR==FNR{x[$0];next}{for(i in x)if($0~i)print}' a b
7.比较两个文件的异同
统计两个文本文件的相同行 grep -Ff file1 file2
统计file2中有,file1中没有的行 grep -vFf file2 file1
一行中部分内容相同的情况 grep -wf file1 file2