Linux基本常用命令

  • 文件传输以及备份载入镜像
    #从192.168.1.1中 拷贝 test.pca 到本地的tmp 文件()
    scp root@192.168.1.1:test.pca /tmp/
    #传输本地tar 文件到 hostname 为19 的机器的tmp文件夹
    scp mynewimage.tar dev19:/tmp/  
    #back up docker镜像
    docker save mynewimage > /tmp/mynewimage.tar
    #载入 docker 镜像
    docker load < /tmp/mynewimage.tar

     

  • tcpdump进行抓包

    #抓取本机的18050 端口的包 并且把抓包内容存储到test.pca 文件中
    tcpdump -i eth0 -vv -w test.pca port 18050
    tcpdump -i eth0 -vv -nn -xx  port 18050
    # -X告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来
    tcpdump -i any port 9200 -s0 -nn -xx -X

    #监视所有发送到主机hostname的数据包
    tcpdump -i eth0 dst -vv -w test.pca host 192.168.0.1

    #抓本机端口18050 http的包
    tcpdump -i eth0 -vv -w test.pca  -A -s 0 'tcp port 18050 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
      表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,
    则网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字。 第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明210.27.48.2是一台主机,net 202.0.0.0 指明
    202.0.0.0是一个网络地址,port 23指明端口号是23。如果没有指定类型,缺省的
    类型是host. 第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src,这些关键字指明了传输的方向。举例说明,
    src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net202.0.0.0 指明目的网络地址是
    202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。 第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,
    实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi
    协议包当作ether的包 进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。 除了这三种类型的关键字之外,其他重要的关键字如下:gateway,broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ',
    与运算是'and','&&';或运算 是'or','││';这些关键字可以组合起来构成强大的组合条
    件来满足人们的需要,下面举几个例子来说明。

     

  • 压缩文件 sz rz
    tar -cvf  cof.tar config/
    sudo sz config.tar
    scp 跳板机文件path 目标服务shh名:/tmp
  • grep 批量替换操作和查询操作
    查看当前文件夹下的文件包含关键字“省”
    grep -nR ""
    
    把当前目录下所有文件包含文字一 替换成文字二
    sudo sed -i "s/文字一/文字二/g" `grep 文字一 -rl`

     

  • 磁盘相关
    #查看磁盘挂载情况
    df -h
    #查看当前一级目录下前十个文件夹大小 du
    -h -d 1 | sort -rh | head -n 10

     

  • 批量删除 find 
    #批量删除七天之前的.log 文件  -f 是rm 强制删除不需要确认文件 ,
    #-mtime +7 表示距离当前时间七天之前的数据 使用之前先把括号内的内容执行一遍以确认删除的文件是预期文件
    rm $(find ./ -type f -name "*.log" -mtime +7) -f
    也可以使用 find ./ -type f -name "*.log" -mtime +7 -Delete
    #在当前目录下搜索大于1k的文件。
    find ./ -size +1k

      #find 搜索路径 [选项] 搜索内容
      选项:

        -atime[+|-]时间:按照文件访问时间搜索

        -mtime[+|-]时间:按照文件数据修改时间搜索

        -ctime[+|-]时间:按照文件状态修改时间搜索

       例如 : find ./ -mtime +7  找出七天之前修改的文件 

        这里数字需要说明以下  例如 +7 表示七天之前  7 表示6-7那一天  -7 表示七天之内的文件。

      #-maxdepth 1 表示当前目录下

        find 查找文件默认是递归的所以只需要查当前目录下的文件的时候 可以指定depth 

      #-type d:查找目录  -type f:查找普通文件  -type l:查找软链接文件

     

  • sed,grep,awk,xargs,sort,head,tail
    ----------------------------------------替换sed--------------------------------
    #将当前目录 test.json 中的abc 字符 替换成 cyao 字符
    sed -i 's/abc/cyao/g' test.json 
    #将当前目录 test.json 中的cyao 字符 删除
    sed -i 's/cyao//g' test.json
    #衍生一下 可以用管道来实现多个文件的替换  (首先 find 命令找出来所有-maxdepth 1 表示当前目录下,的 .json 文件 
    ,然后使用sed 将kongge 字符替换成 空格 这样就可以实现多个文件的字符级别替换了)
    sed -i 's/kongge/ /g' $(find ./ -maxdepth 1  -name "*.json")
    ----------------------------------------查找grep--------------------------------
    #查询当前目录下递归 的.json文件
    grep -nr "abcdefg" *.json 
    #也可以跟着管道线一起使用 比如  
    docker logs --tail 100 |grep "ERRO"
    ----------------------------------------取列awk-------------------------------
    -F  [:#/]    定义了三个分隔符
    awk  -F: '/root/{print }'  /etc/passwd                   打印出文件中含有root的行
    awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd          输出字段1,3,6, 以制表符作为分隔符
    ----------------------------------------------------------xargs-------------------------------
    可以将一些参数集合传递给其他命令作为参数,并利用指定的命令进行处理。
    它可以帮助我们批量处理文件,执行一些需要多个参数的命令,并且支持并发操作。
    使用-i 参数可以让批量操作需要用户确认。
    #例如批量删除.txt文件
      find /tmp -name "*.txt" | xargs rm
    
      #查看多个文件大小等等 
    
       ls | xargs du -sh
    
    ----------------------------------------------------------tail-------------------------------
    #查看容器 redis-test 日志的最后一百行,并且会监测文件变化(-f参数),也就是新的日志追加也会显示
     docker logs --tail 100 -f redis-test
  • 虚拟机磁盘挂载 参考此链接
  • 使用管道线kill多个线程
    ps -ef|grep dotnet|grep -v grep|cut -c 9-15|xargs kill -9
    
    管道符"|"用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的
    
    几个命令:
    "ps - ef"是linux 里查看所有进程的命令。这时检索出的进程将作为下一条命令"grep dotnet"的输入。
    "grep dotnet"的输出结果是,所有含有关键字"dotnet"的进程。
    "grep -v grep"是在列出的进程中去除含有关键字"grep"的进程。
    "cut -c 9-15"是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
    "xargs kill -9"中的xargs命令是用来把前面命令的输出结果(PID)作为"kill -9"命令的参数,并执行该令。

     

 
posted @ 2021-12-30 17:47  雨V幕  阅读(39)  评论(0编辑  收藏  举报