[关闭]
@ferstar 2015-11-13T14:18:39.000000Z 字数 1014 阅读 2171

实用shell脚本整理


SHELL

1. 转换时间和unix时间戳

  1. # 时间转时间戳
  2. date -d "2015-07-24 12:25:00" +%s
  3. # 时间戳转时间
  4. date -d "@1437711900"

分析nginx日志

  1. #查看访问地址次数排行
  2. awk -F\" '{print $2}' blog_access.log | awk '{print $2}' | sort | uniq -c | sort -rn

2. 输出当前目录下各个子目录所使用的空间

  1. du -h --max-depth=1

3. 查找文件内容

  1. grep "search" filename
  2. # 从文件内容查找与正则表达式匹配的行:
  3. grep e “/pattern/” filename
  4. # 查找时不区分大小写:
  5. grep i "search" filename
  6. # 查找匹配的行数:
  7. grep -c "search" filename
  8. # 从文件内容查找不匹配指定字符串的行:
  9. grep v "search" filename
  10. # 结合find
  11. find . -name "*.php" | xargs grep "function"

4. 查看dd命令的进度

dd if=/dev/zero of=/tmp/zero.img bs=10M count=100000
想要查看上面的dd命令的执行进度,可以使用下面几种方法:

比如:每5秒输出dd的进度

  1. 方法一:
  2. watch -n 5 pkill -USR1 ^dd$
  3. 方法二:
  4. watch -n 5 killall -USR1 dd
  5. 方法三:
  6. while killall -USR1 dd; do sleep 5; done
  7. 方法四:
  8. while (ps auxww |grep " dd " |grep -v grep |awk '{print $2}' |while read pid; do kill -USR1 $pid; done) ; do sleep 5; done
  9. 上述四种方法中使用三个命令:pkillkillallkilldd命令发送SIGUSR1信息,dd命令进程接收到信号之后就打印出自己当前的进度。

5. 删除.svn目录或者其他

  1. find . -type d -name ".svn"|xargs rm -rf
  2. # 先(递归)找到当前路径下含有 .svn的文件目录,再经 xargs逐个干掉
  3. #(处理方式是逐个,并不是’删一条显示删了一条再继续删’这样的)
  4. find . -type d -iname '.svn' -exec rm -rf {} \;
  5. #先(递归)找到.当前路径下含有.svn的文件目录,再干掉
  6. -iname filename #同-name ,区别 -i 忽略大小写
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注