1、找出当前目录下超过90天的文件,并将其打包:
思路:首先找到所有符合条件的文件名,并输出到一个文件里面。然后使用tar进行打包,-T 参数是从一个文件获取文件名,然后将文件打包,最后删除已经打包过的文件。
#find . -type f -mtime +90 >file.lst
#tar -T file.lst -cvf 90.tar
#find . -type f -mtime +90 -exec rm -rf {} ;
2、找当前目录下的可执行文件,并copy到bin目录下
#find . -type f -perm -111 | xargs -i cp {} ../bin/
找到三级之内所有以数字开头和结尾的目录,并删除:
#find . -maxdepth 3 -type d -name "[0-9]*[0-9$]" -mtime +3 -exec rm -rf {} ;
找到当前目录下15天之内的文件,并按时间排序,打印出符合条件的行数,文件格式service.log.20181224:
#find . -maxdepth 1 -ctime -15 -type f -newermt 20181209 ! -newermt 20181225 | sort | xargs grep -c "payOrder" | awk -F ":" '{print $2}'
09~25是时间区间,前闭后开。
3、linux处理json文件
jq
linux需要使用yum安装一下:yum -y install jq
# cat jq.json | jq . [ { "name": "呵呵", "url": "http://tool.chinaz.com", "address": { "city": "北京", "country": "中国" }, "arrayBrowser": [ { "name": "Google", "url": "http://www.google.com" }, { "name": "Baidu", "url": "http://www.baidu.com" } ]
# cat jq.json | jq '[.[0] | {name:.name,city:.address.city}] ' [ { "name": "呵呵", "city": "北京" } ]
# cat jq.json| jq '.[1] | {name:.name,city:.address.city}' { "name": "哈哈", "city": "杭州" }
linux处理yaml文件:shyaml
pip install shyaml
# cat node-selector-demo.yaml | shyaml get-value apiVersion: v1 kind: Pod metadata: labels: app: busybox name: test-busybox1 spec: containers: - command: - sleep - '3600' image: busybox imagePullPolicy: Always name: test-busybox1 nodeSelector: com: you
4、查看当前服务器的tcp连接情况
问题:nginx服务器报upstream超时,网页响应大部分超时,设置了upstream参数不能解决,于是考虑到可能是tcp连接达到上限了,于是查看当前的连接数:
#netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'
LAST_ACK t 33
SYN_RECV t 5
ESTABLISHED t 832
FIN_WAIT1 t 40
FIN_WAIT2 t 495
CLOSING t 1
TIME_WAIT t 6958
状态 | 含义 |
---|---|
LISTEN | 服务器在等待进入呼叫 |
SYN_RECV | 一个连接请求已经到达,等待确认 |
SYN_SENT | 应用已经开始,打开一个连接 |
ESTABLISHED | 连接已经建立,正常数据传输状态 |
FIN_WAIT1 | 连接一端(应用)完成数据传输,主动关闭 |
FIN_WAIT2 | 主动关闭一端收到另一端释放连接的确认 |
ITMED_WAIT | 等待所有分组死掉 |
CLOSING | 两边同时尝试关闭 |
TIME_WAIT | 另一边已初始化一个释放 |
CLOSE_WAIT | 连接一端被动关闭 |
LAST_ACK | 等待所有分组死掉 |
CLOSED | 无连接是活动的或正在进行 |
主要关于CLOSE_WAIT、TIME_WAIT:
TIME_WAIT:表示主动关闭,通过优化系统内核参数可容易解决。
CLOSE_WAIT:表示被动关闭,需要从程序本身出发。
处理TIME_WAIT,优化系统内核参数
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.ip_local_port_range = 1024 65000
合并文件,左右列合并 paste: 1、paste -d "," /etc/test.txt /etc/test2.txt -d 指定分隔符,如不指定默认为制表符' ' 2、paste -d " " /etc/test.txt -
文件内容去重:
1、awk
awk '!a[$0]++' test.txt
2、uniq
sort test.txt | uniq
awk 列求和
awk 'BEGIN{sum=0}{sum+=$3}END{print sum}'
分割符为":",的第4列数据求和
awk -F ":" 'BEGIN{sum=0}{sum+=$4}END{print sum}'
ssh tunnel:
ssh -C -f -N -g -L 10.9.8.7:123:10.1.1.4:234 10.9.8.7
123是本地的端口,10.1.1.4是远端地址, 234是远端端口。10.9.8.7是本地地址。
5、linux隐藏光标
echo -e "