find命令的一点注意事项

其实也不是find命令的问题,以前总写不对find命令,今天才发现原因在哪里了。

        

  1. 如果文件不够多我们也不使用find命令;
  2.     

  3. find命令的结果是文件名,要想知道自己find的结果是否正确,一般管道输出给ls
  4.     

  5. 于是命令很容易写成: find …. | ls -lh
  6.     

  7. 结果看到的总是目录内的所有内容,似乎是find失效,为什么呢?
  8.     

  9. 命令应该写成: find … | xargs ls -lh
  10.     

  11. 看到了吧,就一个xargs只差,把所有的罪过都错给了find命令了


下面写几个find命令已做纪念:

        

  • 查找大于30k,并且小于30M的文件:

ffind . -type f -size +30k -size -30M |xargs ls -lh

注意:

        

  1. size的单位有: cbkMG , 里面的“k”是小写的,M、G是大写的
  2.     

  3. 两个size条件之间是“并且”的关系,如果需要“或”关系,可以使用 “-or” 链接两个条件
        

  • 查找小于30k,或者大于30M的文件:

find . -type f -size -30k -or -size +30M |xargs ls -lh

        

  • 查找小于30k,或者大于30M,或者文件名以“abc”开头的文件:

find . -type f -size -30k -or -size +30M -name  -or "abc*" |xargs ls -lh

        

  • 查找小于30k,或者大于30M,并且文件名以“abc”开头的文件:

find . -type f -size -30k -or -size +30M -name  "abc*" |xargs ls -lh

注意:

        

  1. “-or”命令只对后面的一个过滤器有效

关于 -ls 选项的几点用法

为了显示结果方便,find命令内置了-ls选项,使得结果就像ls输出的结果那样,实例:

        

  • 查找小于30k,或者大于30M的文件:

find . -type f -size -30k -ls -or -size +30M -ls

注意: 这里的“-ls”写了两次,如果只写在后面,则小于30k的文件是显示不出来的,这就是该实例的意义所在

        

  • 查找大于30k,并且小于30M的文件:

find . -type f -size +30k -size -30M -ls

        

  • 注意下面这条命令:

find . -type f -size -30k -ls -size +30M -ls

该命令输出的是小于30k的文件,而没有输出大于30M的文件,更不是什么也不输出

按时间查找:

        

  • 最近2天内被修改过的文件
        find . -type f -mtime -2 -ls  
  •     

  • 最近10分钟(用-amin)内被读过的文件
        find . -type f -amin -10 | xargs ls  -lu
        
        注意:这里没有使用ls,因为ls默认显示的是文件的最后修改时间,但是这里条件是访问时间,如果显示的是修改时间,你将不知道你查的结果对还是不对

关于IE的session问题

曾经在同事的IE6上遇到过IE会保存session的情况,就是说,虽然使用的是session,但是重新启动浏览器后该session还是存在的,不知道是什么原因。

现在我使用的是win7下的IE8,也出现了这个问题,我想这不应该是IE的bug;于是,重置IE的所有设置,问题解决,至于是哪项设置影响到的,还需要进一步调查。

怎么?不知道怎么重置?

Internet选项 =》 高级 =》 重置

 

顺便说一下: 重置之后,我的httpwatch在IE中就找不见了,只好重装了一次

关于页面的cache控制

工作中遇到一个页面,该页面是不能cache的,但是其http头是这么写的:

Cache-Control: max-age=0
Pragma: no-cache
Cache-Control: post-check=0, pre-check=0

在我的IE8中,该页面是被cache了一小段时间的,不知道是按照时间还是命中次数cache的,反正访问几次(5/6次吧)cache之后,就重新请求了。

通过fiddler添加cache-control来调试(这个页面不是我们自己的),发现添加了:

Cache-control: no-cache

Cache-control: no-store

Cache-control: no-cache,no-store

都是可以的。一般来讲我们使用第三种写法,至少no-store 对于FF下面的后退是有效的

——————————————————————–

关于fiddler的一点说明:

fiddler可以添加请求头和响应头,但是你知道fiddler做的是一个代理,对于添加的请求头你在httpwatch中是看不到的。另外,由于该页面是需要登录后访问的,似乎在服务器端做了cache方面的控制,当我把Cache-control错加到请求头时,总是显示未登录状态了。

请求头和响应头都是可以在filter里面设置的。

根据文件大小删除一个特殊文件名的文件

文件名为不可见字符,不太好删除,使用find命令找出来,是用exec来删除,找文件的办法有多种,这里根据文件的大小来找。
ls -l 显示的文件大小的单位是字节。 find的size的单位默认为block,可以使用c来说明是字节,如下:

find . -size +22156c -exec  rm {} \;

如果find命令不熟悉的话,就不要这么写了,不如先把其他文件移走,删除目录,然后再创建目录,在移动回来,这样要快的多哦

IE 的bug

在很短的时间内连续打开多个IE窗口做网络请求时,容易产生“网页无法显示”的错误,其它浏览器就没有问题,可以使用如下脚本:

cd C:\Program Files\Internet Explorer\

for /L %i in (1,1,15) do iexplore.exe  http://www.baidu.com/

但是使用如下脚本是没有问题的:

cd C:\Program Files\Internet Explorer\

for /L %i in (1,1,15) do iexplore.exe  http://baidu.com/

原因:

http://baidu.com/  是cache的,第一次可能使用的不是cache,但是后来浏览器的第一个访问一定是走cache的,于是没有出问题;

而,http://www.baidu.com/ 是不cache的,启动浏览器后的第一个请求是不能走cache的,于是可能出错

为什么会出错呢 ? 我也不知道了

不知道多次打开都出现在标签页中是否会有这种问题? 那么如何指定IE在标签页中打开呢?(这里不考虑IE6了)

PHP加速器 eaccelerator 缓存原理

通过eaccelerator 可以了解多种进程间共享的技术,参看: mm.c; 我们会发现,在linux上,这里实现了 5 中进程间共享内存的方式供我们选择使用。

linux 上编译PHP加速器: eaccelerator
[eaccelerator-0.9.6.1]# ./configure

checking for sysvipc shared memory support… yes
checking for mmap shared memory support… yes
checking for mmap on /dev/zero shared memory support… yes
checking for anonymous mmap shared memory support… yes
checking for posix mmap shared memory support… no
checking for best shared memory type… sysvipc
checking for spinlock semaphores support… yes
checking for pthread semaphores support… yes
checking for posix semaphores support… no
checking for sysvipc semaphores support… yes
checking for fcntl semaphores support… yes
checking for flock semaphores support… yes
checking for best semaphores type… spinlock

config后的config.h:
———————–

* Define if you like to use fcntl based semaphores */
/* #undef MM_SEM_FCNTL */

/* Define if you like to use flock based semaphores */
/* #undef MM_SEM_FLOCK */

/* Define if you like to use sysvipc based semaphores */
/* #undef MM_SEM_IPC */

/* Define if you like to use posix based semaphores */
/* #undef MM_SEM_POSIX */

/* Define if you like to use pthread based semaphores */
/* #undef MM_SEM_PTHREAD */

/* Define if you like to use spinlock based semaphores */
#define MM_SEM_SPINLOCK 1

/* Define if you like to use sysvipc based shared memory */
#define MM_SHM_IPC 1

/* Define if you like to use anonymous mmap based shared memory */
/* #undef MM_SHM_MMAP_ANON */

/* Define if you like to use mmap on temporary file shared memory */
/* #undef MM_SHM_MMAP_FILE */

/* Define if you like to use posix mmap based shared memory */
/* #undef MM_SHM_MMAP_POSIX */

/* Define if you like to use mmap on /dev/zero based shared memory */
/* #undef MM_SHM_MMAP_ZERO */

———————
其中:
semaphores  是用来实现锁的机制的,因为对共享内存的(写)操作一定要有锁的机制来保证的。eaccelerator 也还为我们提供了锁的相关函数。

shared memory 是用来缓存opcode的,eaccelerator也为我们提供了相关的函数用来缓存用户自定义的一些信息。

使用时的情况:

Apache 中AddType与AddHandler

AddType 是与类型表相关的,描述的是扩展名与文件类型之间的关系,如:
AddType application/x-x509-ca-cert .crt

说明 .crt 扩展名的文件就是application/x-x509-ca-cert类型的; 在内容协商时,如果客户端需要是application/x-x509-ca-cert类型的,就将 .crt结尾的资源返回
注意: 经过内容协商的资源,在http相应头中有相应的Content-Location说明,如:

GET /a HTTP/1.1


Content-Location: a.php

AddHandler 说明什么样的扩展名使用什么样的程序来处理,描述的是扩展名与处理程序之间的关系
AddHandler cgi-script .cgi

关于Apache的内容协商

该功能使得服务器可以根据agent指定的http头来选择合适的资源。
涉及的http头包括: Accept-*
涉及的Apache中的知识: 类型表

1。 需要模块 : modules/mod_negotiation.so
2。 需要在目录的Options中添加: MultiViews;  如: Options FollowSymLinks MultiViews Indexes
3。 参考文档: http://apache.jz123.cn/content-negotiation.html
4。 该功能可能会影响到rewrite,参考: http://www.linuxpk.com/4941.html

apache根据你给的资源名称a,查找所有的a.*资源,加入有两种资源: a.txt 和a.php, 在类型表中查出:
.txt 对应文档类型为: text/plain 
.php 对应文档类型为: application/x-httpd-php

如果请求时使用的 accept为: text/plain ,则返回a.txt
如果请求时使用的 accept为: application/x-httpd-php ,则返回a.php
如果请求时使用的accept为: text/none ,找不到这种类型,则协商失败,apache返回406,并返回所有可用的类型列表,如:

Not Acceptable

An appropriate representation of the requested resource /a could not be found  on this server.

Available variants:

        

  • a.php , type application/x-httpd-php
  •     

  • a.txt , type text/plain