Shell 常用命令总结

人工智能炼丹师
2021-05-11 / 0 评论 / 179 阅读 / 正在检测是否收录...

shell常用命令

  • 查看CPU

    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
    # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
    
    # 查看物理CPU个数
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
    
    # 查看每个物理CPU中core的个数(即核数)
    cat /proc/cpuinfo| grep "cpu cores"| uniq
    
    # 查看逻辑CPU的个数
    cat /proc/cpuinfo| grep "processor"| wc -l
    
    # 查看CPU使用情况
    mpstat -P ALL
    
  • 显示目录下文件,按文件大小排序

      ls -Shlr #按文件大小(-S)从小到大(-r)排序显示(-hl)
  • 查找文件中包含字符串

      cat file.txt|grep -B 2 key # 查找包含key,并显示前两行
      cat file.txt|grep -A 2 key # 查找包含key,并显示后两行
      cat file.txt|grep -2 key   # 查找包含key,并显示前后两行
  • 查找包含字符串的文件:

      grep -rn "keyword" [files/dir]
  • 查找符合条件的进程并kiil

     ps aux | grep "python test.py" | awk '{print $2}' | xargs kill -9 #适用于批量删除进程
  • 查看硬盘占用情况

      du -hs dir_name # h(human readable) s (而不列出子目录)
      df -h #列出文件系统的整体磁盘使用量
  • 判断符合条件的文件是否存在

      test -f
  • 多线程下载数据

    axel -n num_threads -q download_url
  • rync+sshpass免密码同步数据

    * rsync -av -e "sshpass -p [your_password] ssh -p [your_port]" src_path dst_path   --exclude=exclude_pattern --include=include_pattern`
  • rysnc 同步文件

      rsync -avh --progress source_directory destination_directory
  • 定时服务

    `30 23 * * * find /data/home/jefxiong/PenguinID/videos/* -mtime +8 -exec rm {} \;` #每天23:00定时删除超过8天的数据
  • shm 不足

      mount -o remount,size=32g /dev/shm
  • mount 解决git无法加入软连接问题

      mount --bind src dst
  • 按规则删除指定文件命令

       find . -name '*.DS_Store' -type f -delete #删除Mac下.DS文件
       find . -name "*" -type f -size 0c | xargs -n 1 rm -f #删除空文件
       find . -size 1k -exec rm {} \; #删除小于1k数据
  • 按规则移动文件命令

      find . -iname *.npy -exec mv {} dst_dir \; #移动numpy文件到指定目录下
  • 多个python版本共用时,在脚本中指定python

      PYTHON=${PYTHON:-python} 
      #PYTHON默认值为python,可以在命令行前设置为其他覆盖
      #e.g. PYTHON=python3 (bash scripts/xxx.sh, 脚本中用$PYTHON替代 python
  • awk

      awk '{print $1}' input.txt > out.txt #取input.txt 文件第一列保存到output.txt中
      awk '{print $1,$2}' input.txt > out.txt #取input.txt 文件第一列和第二列保存到output.txt中
      cat  input.txt|awk '{sum+=$1} END {print "Average = ", sum/NR}' #求平均值
      cat  input.txt|awk '{sum+=$1} END {print "Sum = ", sum}' #求和
      awk -F '[|]' '{print $1}' file.txt # 对fil.txt文件利用|进行分割,并取第1个元素输出
      # awk 处理字符串: https://www.jianshu.com/p/8cb01a334527
  • 批量加后缀、前缀重命名

      for file in ./* ; do mv "$file" "$(basename "$file").mp4"; done; #批量加后缀名.mp4
  • 删除特殊字符文件

       # 1. 文件名为 a&b.c, 通过转义\和""解决
      rm a\&b.c
      rm "a&b.c"
    
      # 2. 文件名为 -ab.c,通过加入参数--
      rm -- -ab.c
  • shell 编程

      for i in ${list[@]}; do ... ; done
      for i in ${list[*]}; do ... ; done 
      for i in  exp1 exp2; do ... ; done 
      for i in $(seq 1 100); do ...;done 
    
      for((i=1; i<100; i++)); do ... ; done # c-like
    
      list=(12 34 56)
      echo ${#list[@]} # 获取数组大小
      echo $# #获取执行命令参数个数
  • 免密登陆

    # 生成密钥对(若未生成过)
    ssh-keygen -t rsa -b 4096
    # 复制公钥到远程服务器
    ssh-copy-id -p {ssh_port} {remote_host}
0

评论 (0)

取消
粤ICP备2021042327号