1、查找并删除/data这个目录7天前创建的文件
[root@ansible learngit]# find /data -ctime +7 -exec rm -fr {} \;
[root@ansible learngit]# find /data -ctime +7 | xargs rm -fr
[root@ansible learngit]# find / -size +500M #大于500M的文件
[root@ansible learngit]# find / -type f -name *.log -size +10M
[root@ansible storage]# find / -name sshd_config ! -path /storage/* -print #查找文件,排查某些目录
[root@ansible storage]# find / -name sshd_config -maxdepth 3 #在三层子目录中查找
[root@ansible storage]# find ./ -name '*.jpg' -o -name '*.png' #一次性查找多种类型
在root目录及其1层深的子目录中查找passwd. (例如root — level 1, and one sub-directory — level 2)
2、tar命令压缩排查某个目录
# tar zcvf data.tar.gz /root/* --exclude=bui_nginx --exclude=RECOVERED_FILES
#--exclude参数为不包含某个目录或文件,后面也可以跟多个
3、查看tar包存档文件,不解压
# tar tf data.tar.gz #t是列出存档文件目录,f是指定存档文件
4、批量解压tar.gz文件
for tar in *.tar.gz; do tar zxvf $tar; done
5、筛除出文件中的注释和空格
[root@ansible home]# grep -v "^#" /etc/ssh/sshd_config |grep -v "^$"
6、筛选/etc/passwd文件中所有的用户
方法1:
# cat /etc/passwd |cut -d: -f1
方法2:
# awk -F ":" '{print $1}' /etc/passwd
7、iptables网站跳转
1)开启路由转发
echo "1" > /proc/sys/net/ipv4/ip_forward #临时生效
2)内网访问外网(SNAT):发起访问的内网ip地址转换为指定的ip地址
iptables –t nat -A POSTROUTING -s [内网IP或网段] -j SNAT --to [公网IP]
3)公网访问内网(DNAT)(公网端口映射内网端口):
iptables –t nat -A PREROUTING -d [对外IP] -p tcp --dport [对外端口] -j DNAT --to [内网IP:内网端口]
8、iptables将本机80端口转发到本地8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
9、find命令查找文件,并复制到/opt目录
方法1:
# find /etc -name httpd.conf -exec cp -rf {} /opt/ \; #-exec执行后面命令,{}代表前面输出的结果,\;结束
方法2:
# find /etc -name httpd.conf |xargs -i cp {} /opt #-i表示输出的结果由{}代替
10、查看服务器IP连接数
netstat -tun |awk '{print $5}' | cut -d: -f1|sort |uniq -c|sort -n
-tun:-tu是显示tcp和udp连接,n是以IP地址显示
cut -d:-f1:cut是一个选择性显示一行的内容命令,-d指定:为分隔符,-f1显示分隔符后的第一个字段。
uniq -c:报告或删除文中的重复行,-c在输出行前面加上出现的次数
sort -n:根据不同类型进行排序,默认排序是升序,-r参数改为降序,-n是根据数值的大小进行排序
11、插入一行到391行
sed -i "391 s/^/#this is a test/" /etc/ssh/sshd_config
12、列出nginx日志访问最多的10个IP地址
awk '{print $1}' access.log|sort |uniq -c| sort -nr|head -n 10
sort :排序
uniq -c:合并重复行,并记录重复次数
sort -nr :按照数字进行降序排序
13、显示nginx日志一天访问量最多的10个IP
# awk '$4>="[16/May/2017:00:00:01" && $4<="[16/May/2017:23:59:59"' access_test.log |sort |uniq -c |sort-nr |head -n 10
14、获取当前时间前一分钟日志访问量
grep `date +%d/%b/%Y:%H:%M --date="-1 minute"` access.log |awk 'END{print NR}'
15、找出IP地址
# ifconfig |grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' #-o只显示匹配字符
16、查看网络状态命令
# netstat -antp #查看所有网络连接
# netstat -lntp #只查看监听的端口信息
# netstat -tun #只查看tcp、udp连接的信息
# lsof -p pid #查看进程打开的文件句柄
# lsof -i:80 #查看端口被哪个进程占用
17、生成8位随机字符串
方法1:
# echo $RANDOM |md5sum |cut -c 1-8
方法2:
# openssl rand -base64 4
方法3:
# cat /proc/sys/kernel/random/uuid | cut -c 1-8
18、while死循环
while true; do #条件精确等于真,也可以直接用条件[ "1" == "1" ],条件一直为真
ping -c 2 www.baidu.com
done
19、数字求和
# cat a.txt
10
23
53
56
方法1:
#!/bin/bash
while read num;
do
sum=`expr $sum + $num`
done < a.txt
echo $sum
方法2:
# cat a.txt |awk '{sum+=$1}END{print sum}'
20、判断是否为数字(字符串判断也如此)
# [[ $num =~ ^[0-9]+$ ]] && echo yes || echo no
^ $:从开始到结束是数字才满足条件
=~:一个操作符,表示左边是否满足右边(作为一个模式)正则表达式
30、查看文本中20至30行内容
方法1:
# awk '{if(NR > 20 && NR < 31) print $0}' /etc/ssh/sshd_config
方法2:
# sed -n '20,30p' /etc/ssh/sshd_config
方法3:
# head -30 /etc/ssh/sshd_config|tail
21、more和less分页
用cat命令只能看到最后的内容,用more和less两个命令可以分页查看。more指令可以使超过一页的文件内容分页暂停显示,用户按键后才继续显示下一页。而less除了有more的功能以外,还可以用方向键往上或往下的滚动文件,更方便浏览阅读。
less的常用动作命令:
空格键 向下滚动一屏;
b 向上滚动一屏;
d 向下滚动半屏;
22、head和tail
n head和tail命令
都用于查看文本文件,区别在于: head显示文件的头n行,tail显示文件的尾n行,缺省情况n都为10行。可以通过-n方式指定行数,如:
head -100 file和tail -100 file分别表示显示文件头100行和尾100行内容。