find平时用于查找文件是不可缺少的,find的用法也比较复杂,平时我们用的最多的就是:
find ./ -name "*filename*"
了, 其他一些复杂的用法平时都不怎么用到,这里列下shitou经常用的参数吧:
#找出当前目录下所有以production开头.log结尾的文件 find ./ -name "production*.log" #如果当前目录下还有其他子文件夹,但你不想递归查找子文件夹下的目录时使用 find ./ -maxdepth 1 -name "production*.log" #如果碰巧当前目录下有个匹配到"production*.log"的文件夹,而你只想要regular(一般)文件时 find ./ -maxdepth 1 -name "production*.log" -type f #找出当前目录下包含有shitou字符的文件 find ./ -maxdepth 1 -type f | xargs fgrep 'shitou' #好的,我们继续 #如果你想找最近7天创建的文件时 find ./ -maxdepth 1 -name "production*.log" -type -ctime -7 #如果你想找7天前创建的文件时 find ./ -maxdepth 1 -name "production*.log" -type -ctime +7 #下面来个正真非业余研究的 #如果你想找一个时间段内创建的文件时怎么办呢,find只支持-cnewer参数,即找到比某个文件创建时间更新的文件, #不过利用这个就够了 #首先我们创建两个文件,并且指定创建时间就为我们要寻找时间段的起至, 用于我们作为基准比较使用 touch tmp -t 201005130000 touch tmp1 -t 201005200000 #上面给定时间戳时要按照“年年年年月月日日时时分分”方式指定,好了现在就可以了 find ./ -maxdepth 1 -name "production-*log" -type f -cnewer tmp -and ! -cnewer tmp1
上面的-ctime为create time的意思,还有-atime(access time),-mtime(modify time)
-type参数还可以有d(目录),f(一版文件),等等
另外还有-group查找指定用户组的,-perm查找指定权限的(0644这样的),-size指定大小,-regex使用正则表达式
find后还可以跟管道(|),用xargs命令把查找到的文件用作后续命令的参数传递进来,看上面的例子
如来神掌打完收工
参考资料
Finding Files
2010-05-21 11:36:29, 304 reviews
send to mailbox
有点out了,刚发现一个非常好用的系统调试工具,strace,用来跟踪进程或者程序的执行过程,打印出所有的内核态调用过程,例如文件的open, read 操作,可以用来调试程序的执行过程。
#跟踪ls命令的执行过程,将结果导向output.txt文件
#strace -o output.txt ls
输出的结果中每行开头都是系统的一个方法调用,如write. open等
#跟踪进程pid 3334的执行过(可以跟多个-p开关),打印出来最长80个字符,并且只打印出来open,read的相关操作
#strace -p 3334 -s 80 -e trace=open,read
可以用strace来调试apache的执行过程,进行配置的debug,例如apache在打开AllowOverride All时strace apache的进程会发现有很多open操作,apache需要遍历web目录下所有的目录查找.htaccess文件,当设置为none时open操作明显减少,可以结合压力测试看到效果,
上面说了trace只能跟踪内核态调用过程,不能跟踪用户态的操作,比如php页面进行的逻辑运算,数据库的操作等是不能跟踪的。
另: Mac OS上同功能的工具是dtruss
参考:
http://www.gnome.org/~newren/tutorials/developing-with-gnome/html/ch03s02.html
http://www.cyberciti.biz/tips/linux-strace-command-examples.html
http://humberto.digi.com.br/blog/2008/02/25/strace-on-mac-os-x-leopard/
2009-11-17 21:54:54, 586 reviews
just DO NOT support IE