zoukankan      html  css  js  c++  java
  • Ops: 高效组合命令集合

    简介

    本篇博客收集一些常用的复杂命令组合,这些命令组合能够高效的定位、分析、处理一些问题,希望对需要的小伙伴有所帮助。

    命令集合

    批量备份文件

    将名称为config.xml的文件查找出来,并在原目录备份

    find /var/lib/jenkins/jobs -name config.xml | xargs -t -I '{}' /usr/bin/cp '{}' '{}.bak'

    删除最后一行

    将名称为config.xml的文件查找出来,并将该文件的最后一行删除

    find /var/lib/jenkins/jobs -name config.xml | xargs -t -I '{}' sed -i '$d' {}

    追加内容到指定文件

    将名称为config.xml的文件查找出来,并将/data/scripts/post文件内容

    find /var/lib/jenkins/jobs -name config.xml -exec bash -c "cat /data/scripts/post >> {}" ;

    压缩文件同时排除某些文件

    tar -zcvf marketdata.tar.gz marketdata/ --exclude 20190323*

    一个文件内容插入到另一个文件

    将test文本的内容插入到demo的第6行

    sed -i '6 r test' demo
    如果不知道行号,但是知道模式可以用

    sed -i '/regex/ r test' demo # regex是正则表达式

    如下文本 zimu.txt

    aaaaa
    #bbbbbb
    cccccc
    dddddd
    

    用sed在aaa前加#注释

    sed 's/^aaa/#&/' zimu.txt # &的意思是匹配任意字符(就是说未知数,啥都行) 这条命令是 替换以aaa开头的

    用sed取消bbb前面的注释

    sed 's/^#(bbb)/1/' zimu.txt #1的意思 就类似于 前面的 (bbb) 1就是复制这个位置的内容 如果有 第二个 那么久2就是复制第二个位置的内容

    sed 可以在匹配的模式之前(i)或之后(a)增加一行或多行;在匹配的模式之前(i):

    # sed -e ‘/123/ asolongg’ a.txt
    1234569
    solongg
    abcABCabc
    
    # sed -e ‘/123/ isolongg’ a.txt
    solongg
    1234569
    abcABCabc
    

    不换行输出时间

    echo -n `date +%Y-%m%d-%H:%M-`

    打印分隔符

    for i in `seq 1 $COLUMNS`; do echo -n "+"; done

    循环输出docker信息

    docker ps | awk -F' ' '{print $NF}' | xargs -I {} bash -c "docker top {}"
    docker ps | awk -F' ' '{print $NF}' | xargs -t -I '{}' docker top '{}'

    批量替换文本

    替换当前目录下文本中文本
    sed -ig 's/text1/text2/g' ./*

    测试TCP或UDP连接

    nc -v 192.168.30.100 1200
    nc -uv 192.168.30.100 1200

    查看该目录下文件夹大小

    du -sh ./* | sort -nr

    统计显示网络连接状态的个数

    netstat -ant | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    统计单个ip 80端口连接数量并排序,取前30名

    netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n30

    杀掉服务

    ps -ef |grep CtpTradeServe |grep -v grep | awk '{print $2}'|xargs kill -9

    命令行ip查询:

    UNIX/Linux: #curl cip.cc  
    Windows: >telnet cip.cc  
     >ftp cip.cc  
    命令行查询(纯ip):  
    UNIX/Linux: #curl ip.cip.cc  
    

    监控到某一网站的网络状况

    curl -o /dev/null -s -w %{http_code}-%{time_namelookup}-%{time_redirect}-%{time_pretransfer}-%{time_connect}-%{time_starttransfer}-%{time_total}-%{speed_download}"
    " https://www.glinux.top  
    

    ping监控

    #!/bin/bash
    while true; do
    echo -n `date` "---> ">> /root/ping.txt; (ping 172.31.65.241 -c 1 -W 1|grep "from">> /root/ping.txt)  && (echo -n "" >> /root/ping.txt) || (echo "Fail.">> /root/ping.txt)
    sleep 1
    done
    

    web ip访问日志统计

    tail -n 1000000 www.glinux.top-access.log|grep '06/Sep/2018:08:'|awk '{print $1}'| sort |uniq -c|sort -nr
    grep -r 11/Oct/2018:04: ./www*.glinux.top-access.log | awk '{print $1}'| sort |uniq -c|sort -nr

    cnetos 7查看服务报错日志

    journalctl -u 服务名

    wget请求网页,功能类似curl,请求数据不保存为文件,直接cosole输出

    wget -O - -q https://www.glinux.top/index.html

    docker容器含有默认命令,重写默认命令,快速启动,退出销毁容器命令

    docker run --name temp --rm -it --network host --entrypoint "" nervos/ckb:v0.22.0-rc3 bash
    docker run -v `pwd`:/root/.celo --entrypoint /bin/sh -it us.gcr.io/celo-testnet/celo-node:alfajores -c "geth account new"

    iptables 端口转发

    # 放行转发流量(默认安装docker,会关闭到eth0的转发)
    iptables -A FORWARD -o eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    # 放行指定端口的转发流量
    iptables -A FORWARD  -p tcp --dport 3000 -j ACCEPT
    # 添加nat 转发,访问本主机2000端口会转发到172.16.131.35 的3000端口(:3000不加,默认会按dport 转发端口)
    iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 2000 -j DNAT --to 172.16.131.35:3000
    # 设置地址伪装,通过eth0转发出到172.16.131.35的流量会伪装原地址为本机(保证正常通信)
    iptables -t nat -A POSTROUTING -d 172.16.131.35/32 -o eth0 -j MASQUERADE
    # 端口重定向
    iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 18888 -j REDIRECT --to 8888
    

    iptables 删除条目

    查看iptables nat记录条目
    iptables -L -n -t nat --line-number
    删除iptables 条目
    iptables -t nat -D PREROUTING 1
    iptables -t nat -D POSTROUTING 20
    

    tcpdump 使用

    tcpdump -i eth0 tcp dst port 80 -nn -vvv #抓目的端口是80, 协议和端口数字化显示
    tcpdump -i eth0 host 192.9.205.111 #抓取和该主机的通信
    tcpdump -i eth0 -nn src host 192.9.205.111 # 抓取源为该主机的通信, 并数字化
    tcpdump -i eth0 -nn  host 192.9.205.111 and 125.118.218.177 #仅抓他们两个的通信
    tcpdump -i eth0 -nn  host 192.9.205.111 and (125.118.218.177 or 192.9.205.115) #抓取该主机和这两个IP的通信
    tcpdump -i eth0 -nn -A tcp port 80 #抓取tcp 80的通信
    tcpdump -i eth0 -nn -XX tcp port 80 #抓取通信, 并以ASCII显示链路层
    tcpdump -i eth0 -nn -vv -XX tcp port 80 #更详细信息
    

    nc 使用

    # 测试端口是否通畅
    ~# nc -vz 172.31.44.178 30503
    Connection to 172.31.44.178 30503 port [tcp/*] succeeded!
    ~# nc -vz 172.31.44.178 30504
    nc: connect to 172.31.44.178 port 30504 (tcp) failed: Connection refused
    

    使用iptables-persistent持久化iptables规则

    sudo apt-get install iptables-persistent
    # Ubuntu 14.04
    sudo /etc/init.d/iptables-persistent save
    sudo /etc/init.d/iptables-persistent reload
    # Ubuntu 16.04
    sudo netfilter-persistent save
    sudo netfilter-persistent reload
    # 规则保存位置
    

    批量干掉一个进程

    pgrep nginx |xargs -I '{}' kill '{}'
    

    获取commit 和 commit time

    # 可以连起来做容器Tag
    ➜  ansible git:(master) git log --pretty=format:"%ad" --date=short  | head -1
    2020-06-17
    ➜  ansible git:(master) git rev-parse --short HEAD
    9f9f8e5
    

    流量查看工具

    nethogs eth0

    参考文档

    sed命令:

    jq命令:

    curl命令:

    使用iptables-persistent持久化iptables规则:

  • 相关阅读:
    https://developer.aliyun.com/ebook?utm_content=g_1000256420
    形容词在句子中的位置
    顺风水水
    https://www.youtube.com/watch?v=pVIywLXDuRo 有趣到流泪
    经济机器是怎样运行的 (时长30分钟) Ray Dalio
    https://codepen.io/deadzq-the-decoder/pen/qBqQYXg
    Vue 10 test
    vue day2
    codepen学Vue day2
    代理总结更新
  • 原文地址:https://www.cnblogs.com/William-Guozi/p/ops-command.html
Copyright © 2011-2022 走看看