• 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 指定分隔符,如不指定默认为制表符'	'
    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 "33[?25l"

    显示光标

    echo -e "33[?25h"
  • 相关阅读:
    DS博客作业03--树
    DS博客作业02--栈和队列
    DS博客作业01--线性表
    C语言博客作业05--指针
    C语言博客作业04--数组
    C语言博客作业03--函数
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业02--栈和队列
    C博客作业05-指针
  • 原文地址:https://www.cnblogs.com/cuishuai/p/7987179.html
Copyright © 2020-2023  润新知