下载地址:memcached-tool ,用法命令:
perl memcached-tool server_ip:prot display
perl memcached-tool server_ip:prot dump
perl memcached-tool server_ip:prot stats
perl memcached-tool server_ip:prot move 7 9
stats 输出说明:
pid memcache服务器的进程ID
uptime 服务器已经运行的秒数
time 服务器当前的unix时间戳
version memcache 版本
pointer_size 当前操作系统的指针大小(32位系统一般是32bit)
rusage_user 进 程的累计用户时间
rusage_system 进程的累计系统时间
curr_items 服务器当前存储的items数量
total_items 从服务器启动以后存储的items总数量
bytes 当前服务器存储items占用的字节数
curr_connections 当前打开着的连接数
total_connections 从服务器启动以后曾经打开过的连接数
connection_structures 服务器分配的连接 构造数
cmd_get get命令(获取)总请求次数
cmd_set set 命令(保存)总请求次数
get_hits 总命中次数
get_misses 总未命中次数
evictions 为获取空闲内存而删除的items数
(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read 总读取字 节数(请求字节数)
bytes_written 总发送字节数(结果字节数)
limit_maxbytes 分配给memcache的内存大小(字节)
threads 当前线程数
在centos下,开机后会自动执行/etc/rc.local中的命令,平时启动tomcat的命令为tomcat_home/bin/startup.sh或tomcat_home/bin/catalina.sh start,当直接把他们任何一个加入到/etc/rc.local中,重启机器后发现tomcat并没有启动。原因是开机时java的环境还没有设置好,故自己写一个脚本,先设置java环境,然后在启动,脚本如下:
export JAVA_HOME=/usr/local/jdk1.6.0_30
export PATH=$JAVA_HOME/bin/:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
export CATALINA_HOME=/usr/local/tomcat-6.0.35/
/usr/local/tomcat-6.0.35/bin/catalina.sh start
假设保存成一个名为auto-startup.sh的文件存放在/usr/local/tomcat-6.0.35/bin下,然后在/etc/rc.local加入/usr/local/tomcat-6.0.35/bin/auto-startup.sh即可。注意:需要设置auto-startup.sh有执行权限。
利用nginx的rewrite的指令,可以实现url的转向,对于rewrtie有四种不同的flag,分别是redirect、permanent、break和last。其中前两种是跳转型的flag,后两种是代理型。跳转型是指有客户端浏览器重新对新地址进行请求,代理型是在WEB服务器内部实现跳转的。
- redirect:302跳转到rewrtie后面的地址。
- permanent:301永久调整到rewrtie后面的地址,即当前地址已经永久迁移到新地址,一般是为了对搜索引擎友好。
- last:将rewrite后的地址重新在server标签执行。
- break:将rewrite后地址重新在当前的location标签执行。
使用root或proxy_pass指定源,last,break都可以,但是结果可能会有差别,后面用例子说明;使用alias指定源,必须使用last。假如有如下配置:
location / {
root /var/www/html;
index index.html index.htm;
rewrite "/x/t.html" /y/t.html break;
}
location /y/ {
root /var/www/html/other;
}
当请求/x/t.html,符合rewrite规则,所以进行调整,调整的地址为/y/t.html,由于使用的flag是break,所以在“location /”中进行跳转,结果是/var/www/html/y/t.html。但如果flag为last,那么/y/t.html将在server标签中重新执行,由于存在一个“location /y/”,所以跳转被重新指定到“location /y/”标签,所以这个时候的结果为/var/www/html/other/y/t.html。
注意:使用last,如果配置不当,可能引起死循环。例如:
location /x/ {
proxy_pass http://my_proxy;
rewrite "^/x/(.*)\.html$" /x/1.html last;
}
rsync带上delete的参数后,当源目录中的文件删除,同步后目标目录中的文件也会被删除,如果源目录写法不当,可能无法达到同步删除目标目录的文件。例如:
/usr/bin/rsync -vzrtopg --progress --delete \
/home/yangyz/tmp/src/* /home/yangyz/tmp/dest/
当删除src下的文件或文件夹时,同步后dest中还是存在,如果是删除src的子目录下的,同步后dest中会被删除,而下面命令就不一样,不管删除的是哪个文件夹下的内容,同步dest都会做相同的删除
/usr/bin/rsync -vzrtopg --progress --delete \
/home/yangyz/tmp/src/ /home/yangyz/tmp/dest/
上述两条命令的不同之处就是在src后面是否带*号,另外如果src目录后不带斜杠,那么是将src目录复制到dest中,包含了src目录,否则是把src目录下的文件同步到dest中,不包含src目录。
date命令可以获取当前的时间,通过man,可以看到date有很多参数可以用,很容易做到格式化,例如:
date +"%F"
输出格式:2011-12-31
date +"%F %H:%M:%S"
输出格式:2011-12-31 16:29:50
这都是打印出系统的当前时间,如果要获取相对当前时间的某个时间,需要怎么做,通过 -d 参数就能实现。例如:
date -d"tomorrow" +"%F %H:%M:%S"
输出明天这个时候的时间
date -d"yesterday" +"%F %H:%M:%S"
输出昨天这个时候的时间
如果说我想获取13天前的时间怎么办,-d参数还有更加灵活的用法,例如:
date -d"-1 day ago" +"%F %H:%M:%S"
输出明天这个时候的时间
date -d"1 day ago" +"%F %H:%M:%S"
输出昨天这个时候的时间
date -d"1 week ago" +"%F %H:%M:%S"
输出7天前这个时候的时间,等价于
date -d"7 day ago" +"%F %H:%M:%S"
可以看到ago的强大了吧,第一个数字可以是负数,负数表示将来时间,正数表示前面已经过去的时间,第二个参数minute、hour、day、month、week。
nginx中可以使用rewrite配置url的重定向,rewrite指令可以位于server段,也可以位于location中,配置rewrite后通过/usr/local/nginx/sbin/nginx -t检查配置时,出现如下错误:
nginx: [emerg] directive "rewrite" is not terminated by ";" in /usr/local/nginx/conf/nginx.conf:139
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
解决的办法是把规则段使用引号引起来。例如:
rewrite ^/u_(.{7})\.js$ /action/js.php?i=$1 break;
修改为
rewrite "^/u_(.{7})\.js$" /action/js.php?i=$1 break;
本条可以不用引号
rewrite ^/u_(\d+)\.js$ /action/js.php?i=$1 break;
为什么有些必须要引号,有些又可以省略呢,仔细看第一条规则,里面出现了符号 “{、}”,应该是它造成的,因为配置文件中都是用它来作为配置的段起止标记,所以为了安全起见,最好还是都带上引号。
想要在php中使用memcached,就必须按照支持memcached的扩展,目前有两种,一个是memcache,另一个是memcached。memcache是原生实现的,支持OO和非OO两套接口并存,而memcached是使用libmemcached,只支持OO接口。更多关于他们的区别,请参考:http://hi.baidu.com/dong_love_yan/blog/item/afbe1e12d22e7512203f2e21.html。本文以安装memcached扩展为例。
libmemcached下载地址:https://launchpad.net/libmemcached/+download
memcached下载地址:http://pecl.php.net/package/memcached
使用wget下载
wget http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz
wget http://pecl.php.net/get/memcached-1.0.2.tgz
得到两个文件libmemcached-1.0.2.tar.gz和memcached-1.0.2.tgz
安装libmemcached-1.0.2.tar.gz,解压后进入解压的文件夹,执行
./configure --prefix=/usr/local/libmemcached --with-memcached
make
make install
安装memcached-1.0.2.tgz,解压后进入解压的文件夹,执行
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached/
make
make install
其中 phpize位于php安装路径的bin目录下
修改php.inp,增加如下信息:
extension=memcached.so
centos下memecached安装笔记
项目地址:http://memcached.org/,选一个比较新的版本,本文选用的memcached-1.4.10.tar.gz,使用wget下载到本地
wget http://www.memcached.org/files/memcached-1.4.24.tar.gz
memecached依赖libevent库,可以用rpm -qa | grep libevent检查本机是否装有该库,如果没有按照,用yum安装,
yum -y install libevent libevent-devel
解压下载的源代码,进入解压后的文件夹,执行
./configure --prefix=/usr/local/memcached
make
make install
如果不出意外,memcached服务就安装成功了,安装的路径为/usr/local/memcached,启动服务如下:
/usr/local/memcached/bin/memcached -d -m 128 -l 127.0.0.1 -u root
其中
-d 以守护程序(daemon)方式运行 memcached;
-m 设置 memcached 可以使用的内存大小,单位为 M;
-l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数;
-p 设置监听的端口,默认为 11211,所以也可以不设置此参数;
-u 指定用户,如果当前为 root 的话,需要使用此参数指定用户。
更多参数可以使用 /usr/local/memcached/bin/memcached -h 获取。
停止服务可以使用kill -9 memcached进程号
有一个perl脚本的工具,可以查看memcached的运行情况,下载地址:memcached-tool
运行方式:
perl memcached-tool 127.0.0.1:11211 stats
以前一直用echo的方式来清空一个文件的内容,例如 echo “” > file_name,这样虽说能清掉文件的内容,但是文件会有一个空行,其实cat能更好的胜任此项任务,cat 一个空文件然后重定向文件即可。那里去找这个空文件呢,系统的/dev/null就是一个很好选择,所以如下命令
cat /dev/null > file_name
就可以彻底清空文件的内容了。
执行linux命令或脚本时,如果不想打印出错误信息,可以使用
command 2>/dev/null
注意:2>/dev/null中间不要有空格
同样,如果不想看到标准的输出,则可以这样
command 1>/dev/null
要是不想看到任何输出,则:
command >/dev/null 2>&1
linux有3个默认的I/O
- 0 是标准输入,一般是键盘
- 1 是标准输出,一般是屏幕了
- 2 是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了
现在知道上述的1、2的含义了,所以第一条命令就是把命令的错误信息重定向到一个空设备中,即丢弃此信息,第二条就是把标准输出重定向到空设备中,最后一条是把标准输出(默认)重定向到空设备,同时把错误信息定向到标准输出中,当然可以这么写
command 1>/dev/null 2>&1