linux sports - yaokun123/php-wiki GitHub Wiki

Linux技巧

一、查看哪些文件中包含指定字符串

find . |xargs grep -n --color "宽"

-n:显示行号
--color:将指定字符串用特殊颜色标识

二、Vim自动添加注释及智能换行

# vi ~/.vimrc 添加如下内容:

function AddTitle()
call setline(1,"#!/bin/bash")
call append(1,"#====================================================")
call append(2,"# Author: yaok")
call append(3,"# Create Date: ". strftime("%Y-%m-%d %H:%M:%S"))
call append(4,"# Description: ")
call append(5,"#====================================================")
endf
map <F4> :call AddTitle()<cr>

三、iptables网站跳转

先开启路由转发:
echo "1" > /proc/sys/net/ipv4/ip_forward  #临时生效

内网访问外网(SNAT):
iptables –t nat -A POSTROUTING -s [内网IP或网段] -j SNAT --to [公网IP]
#内网服务器要指向防火墙内网IP为网关

公网访问内网(DNAT)(公网端口映射内网端口):
iptables –t nat -A PREROUTING -d [对外IP] -p tcp --dport [对外端口] -j DNAT --to [内网IP:内网端口]
#内网服务器要配置防火墙内网IP为网关,否则数据包回不来。另外,这里不用配置SNAT,因为系统服务会根据数据包来源再返回去。

iptables将本机80端口转发到本地8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

四、find命令查找文件并复制到/opt目录

方法1:
find /etc -name httpd.conf -exec cp -rf {} /opt/ \;:    
#-exec执行后面命令,{}代表前面输出的结果,\;结束命令

方法2:
find /etc -name httpd.conf |xargs -i cp {} /opt     
#-i表示输出的结果由{}代替

五、列出nginx日志访问最多的10个IP

方法1:
awk '{print $1}' access.log |sort |uniq -c|sort -nr |head -n 10
sort :排序
uniq -c:合并重复行,并记录重复次数
sort -nr :按照数字进行降序排序
   
方法2:
awk '{a[$1]++}END{for(v in a)print v,a[v] |"sort -k2 -nr |head -10"}' access.log

六、