本
文
摘
要
本人工作7年左右,结合日常工作给出一些日常用的shell命令,这些命令基本可以覆盖日常工作的80%以上的工作需要。这里不包括具体性能的查看,希望对大家有所帮助。shell我的理解作为日常工具即可,不必做太过深入的要求,但是基本功还是需要掌握的扎实。
1 for 循环
for应该是使用最高频的一个命令了,如果需要处理一些简单的东西 for 循环就足够了
for i in `cat file`;do echo $i ;done
2 awk 按某一列相同变量求和
求和:awk BEGIN{sum=0}{sum+=$1}END{print sum} data.txt
变量:awk -v var=bianliang BEGIN{print var}3 某一列相加
awk {a[$1]+=$2}END{for(i in a){print i,a[i]}}4 统计个数
按列统计个数,统计第二列各个阈值内个数的分布。
awk $2>2000{a+=1}$2>=1000&&$2<2000{b+=1}$2>=500&&$2<1000{c+=1}$2<500&&$2>200{d+=1}$2<200{e+=1}END{print ">2000 "a"\n1000-2000 "b"\n500-1000 "c"\n<200-500 "d"\n<200 "e}
5 两个文件 按 列合并
awk NR==FNR{a[i]=$0;i++}NR>FNR{print a[j]","$0;j++} 50host.cp 50hosts
a文件b文件合并1a1,a2b2,b3c3,c6 两个文件求交集
grep -v -f file1 file2 && grep -v -f file2 file1
但是这个命令比较慢 文件小的时候可以使用
comm 这个命令比较快 需要提前排序
comm -3 file1 file2
7 扫盘
fuser -km /dev/sda3 杀死所有进程
把sda3先umount下来
然后fsck -y /dev/sda3
8 日志清理
find -mtime +3 -name "lock.log.*" -exec rm -rf {} \;
-mtime +3 3天以上 -3 3天以内
{}是find的结果 *** , \;是结束命令
9 sed 修改第几个变量
sed -i "/^ip:.*/{x;s/^/./;/^\.\{1\}$/{x;s/.*/ip:$metaserver_ip_0/;x};x;}
10 shell 中 获取当前所在目录
basepath=$(cd `dirname $0`; pwd)
11 查看线程数
pstree -p `ps -e | grep master | awk {print $1}` |wc -l