sol229 发表于 2018-8-30 06:10:46

linux系统管理的常用shell命令

  参考文档:http://467754239.blog.51cto.com/4878013/1440457http://yunhaozou.org/perl-shell/162.html
  1.显示消耗内存/CPU最多的10个进程
  ps aux | sort -nk +4 | tail
  ps aux | sort -nk +3 | tail
  2.查看进程
  按内存从大到小排列
  ps -e-o "%C: %p : %z : %a"|sort -k5 -nr
  3.按cpu利用率从大到小排列
  ps -e-o "%C: %p : %z : %a"|sort-nr
  3.查看Apache的并发请求数及其TCP连接状态
  netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S}’
  4. 查找占用磁盘IO最多的进程
  wget -c http://linux.web.psi.ch/dist/scientific/5/gfa/all/dstat-0.6.7-1.rf.noarch.rpm
  dstat -M topio -d -M topbio
  5.找出自己最常用的10条命令及使用次数(或求访问最多的ip数)
  sed -e ‘s/| /\n/g’ ~/.bash_history |cut -d ‘ ‘ -f 1 | sort | uniq -c | sort -nr | head
  6.日志中第10个字段表示连接时间,求平均连接时间
  cat access_log |grep “connect cbp” |awk ‘BEGIN{sum=0;count=0;}{sum+=$10;count++;}END{printf(“sum=%d,count=%d,avg=%f\n”,sum,count,
  sum/count)}’
  7.lsof命令
  lsof abc.txt 显示开启文件abc.txt的进程
  lsof -i :22 知道22端口现在运行什么程序
  lsof -c abc 显示abc进程现在打开的文件
  lsof -p 12看进程号为12的进程打开了哪些文件
  8.rsync命令(要求只同步某天的压缩文件,而且远程目录保持与本地目录一致)
  /usr/bin/rsync -azvR –password-file=/etc/rsync.secrets `find . -name “*$yesterday.gz”-type f ` storage@192.168.2.23::logbackup/13.21/
  9.把目录下*.sh文件改名为*.SH
  find .-name “*.sh” | sed’s/\(.*\)\.sh/mv \0 \1.SH/’ |sh
  find .-name “*.sh” | sed’s/\(.*\)\.sh/mv & \1.SH/’|sh(跟上面那个效果一样)
  10.ssh执行远程的程序,并在本地显示
  ssh -n -l zouyunhao 192.168.2.14 “ls -al /home/zouyunhao”
  11.shell段注释
  :8部分设定值为阀值,这条句子会自动将netstat -an 中查到的来自同一IP的超过一定量的连接的列入禁止范围。   基中本机ip改成你的服务器的ip地址
  42. 怎样知道某个进程在哪个CPU上运行?
  ps -eo pid,args,psr
  43. 统计var目录下文件以M为大小,以列表形式列出来。

  find /var -type f | xargs ls -s | sort -rn | awk '{size=$1/1024; printf("%dMb %s\n",>  查找var目录下文件大于100M的文件,并统计文件的个数
  find /var -size +100M -type f | tee file_list | wc -l
  44. sed 查找并替换内容
  sed -i "s/varnish/LTCache/g"   `grep "Via" -rl /usr/local/src/varnish-2.0.4`
  sed -i "s/X-Varnish/X-LTCache/g"   `grep "X-Varnish" -rl /usr/local/src/varnish-2.0.4`
  45. 统计目录下文件的大小(按M打印显示)
  du $1 --max-depth=1 | sort -n|awk '{printf "%7.2fM ----> %s\n",$1/1024,$2}'|sed 's:/.*/\([^/]\{1,\}\)$:\1:g'
  46.关于CND实施几个相关的统计
  统计一个目录中的目录个数
  ls -l | awk '/^d/' | wc -l
  统计一个目录中的文件个数
  ls -l | awk '/^-/' | wc -l
  统计一个目录中的全部文件数
  find ./ -type f -print | wc -l
  统计一个目录中的全部子目录数
  find ./ -type d -print | wc -l
  统计某类文件的大小:
  find ./ -name "*.jpg" -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
  47. 去掉第一列(如行号代码)
  awk '{for(i=2;i=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"):$1>=2**10? ($1/2**10, "K"): ($1, "")}e'
  shaw答案 :du -hs $(du -sk ./`ls -F |grep /` |sort -nr |awk '{print $NF}')
  也可 以实现,不过不是特别完美。但好记。
  52.清空linux buffer cache
  sync && echo 3 > /proc/sys/vm/drop_caches
  53.将当前目录文件名全部转换成小写
  for i in *; do mv "$i" "$(echo $i|tr A-Z a-z)"; done
  53.消除vim中的^M的几种方法
  1)dos2uninx filename
  2)sed -e 's/^M//' filename
  3)vim中 :s/^M//gc
  4)col -bx < dosfile > newfile
  5)tr -s "\r\n" "\n" < file > newfile
  54. 清除所有arp缓存
  arp -n|awk '/^/ {print "arp -d "$1}'|sh
  55. 绑定已知机器的arp地址
  cat /proc/net/arp | awk '{print $1 " " $4}' |sort -t. -n +3 -4 > /etc/ethers
  perl的
  perl -ne 'm/^([^#][^\s=]+)\s*(=.*|)/ && printf("%-35s%s\n", $1, $2)' /etc/my.cnf
  55.查看ssh暴力***的ip和***次数
  grep -o '\{1,3\}\.\{1,3\}\.\{1,3\}\.\{1,3\}' /var/log/secure | sort | uniq -c

页: [1]
查看完整版本: linux系统管理的常用shell命令