linux---命令小结

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 指定分隔符,如不指定默认为制表符'\t'
2、paste -d "\t"  /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 "\033[?25l"

显示光标

echo -e "\033[?25h"

 

6、命令自动补全

 bash

yum -y install bash-completion

echo "source /usr/share/bash-completion/bash_completion">>/root/.bashrc

source /root/.bashrc

 

7、curl 测试websocket

curl --no-buffer -H 'Connection: keep-alive, Upgrade' -H 'Upgrade: websocket' -v -H 'Sec-WebSocket-Version: 13' -H 'Sec-WebSocket-Key: websocket' http://app.ier.loc/wsswap/realTime

 

8、统计线程数

printf "    NUM  PID\t\tCOMMAND\n" && ps -eLf | awk '{$1=null;$3=null;$4=null;$5=null;$6=null;$7=null;$8=null;$9=null;print}' | sort |uniq -c |sort -rn | head -2

 

posted @ 2017-12-05 15:26  诗码者  阅读(395)  评论(0编辑  收藏  举报