linux下find命令根据系统时间查找文件用法

2011年9月5日 没有评论

find 命令有几个用于根据您系统的时间戳搜索文件的选项。这些时间戳包括

mtime		文件内容上次修改时间
atime		文件被读取或访问的时间
ctime		文件状态变化时间

mtime 和 atime 的含义都是很容易理解的,而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则 inode 数据也将变化。这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。由于在这些情况下,文件内容不会被读取或修改,因此 mtime 和 atime 不会改变,但 ctime 将发生变化。

这些时间选项都需要与一个值 n 结合使用,指定为 -n、n 或 +n。

N * 24
+1	表示	1 * 24 +24小时以外..
+0	表示	0 * 24 +24小时以外
1	表示	1 * 24 + 24 到 24 之间..
0	表示	0 * 24 + 24 到 0 之间..
-1	表示	0 * 24 +24 内,甚至为未来时间...

1.当前时间24小时—当前时间(昨天-今天)
#find . -mtime 0
2.当前时间48小时前–当前时间24小时前(前天-昨天)
#find . -mtime 1
3.当前时间48小时前(2天前)
#find . -mtime +1
4.当前时间24小时–当前时间(昨天-今天)
#find . -mtime -1

centos下搭建apache+svn服务器

2011年8月31日 没有评论

本文将详细介绍centos5如何搭建svn服务器。包括apache,subversion的安装和一些简单的配置。

  • 安装Apache HTTP Server

apache下载地址:http://www.apache.org/dist//httpd/httpd-2.2.20.tar.gz

通过tar -zxvf httpd-2.2.20.tar.gz 解压,进入解压后的文件夹,执行

./configure --enable-dav --enable-so --prefix=/usr/local/apache2

其中,–enable-dav允许Apache提供DAV协议支持;–enable-so允许运行时加载DSO模块,前两个参数是必须要加的,–prefix 是安装的位置。如果configure通过,接着执行

make && make install

数分钟后就完事了,通过 /usr/local/apache2/bin/apachectl -k start 来启动,在浏览器中访问127.0.0.1,如果出现 It’s Works!,那么说明安装成功。

  • 安装Subversion
  • Subversion
Subversion需要需要下载两个文件subversion-1.6.17.tar.bz2和subversion-deps-1.6.17.tar.bz2,它们的下载地址是
http://subversion.tigris.org/downloads/subversion-1.6.17.tar.bz2
http://subversion.tigris.org/downloads/subversion-deps-1.6.17.tar.bz2

分别解压subversion-1.6.17.tar.bz2和subversion-deps-1.6.17.tar.bz2,解压后他们都在subversion-1.6.17这个文件夹下,然后执行configure,命令如下

./configure --with-apxs=/opt/apache2/bin/apxs --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --prefix=/usr/local/subversion-1.6.7

其中,–with-apxs 用于生成apache httpd的mod_dav_svn和mod_authz_svn模块;–with-apr 和 –with-apr-util=参数指向 Apache 的安装根目录,而不是使用缺省的 SVN 安装包中自带的 apr ,否则如果你安装的 Apache 版本不同有可能导致 APR 库不匹配,出现类似 Can’t set position pointer in file ‘/svn/test/db/revs/1′: Invalid argument 的错误,–prefix 是安装的位置。中间可能会出现某些库找不到的情况,根据提示用yum来搞定。configure成功后,执行编译和安装,即

make && make install

如果没有报错,svn就成功安装好了。对于版本1.8+,可能需要通过如下命令把对应 so 文件 copy 到apache 目录。

cp subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache/modules/
cp subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache/modules/
  • 如何创建的Subversion的版本库

假设我们把版本库建立在/opt/svnroot 目录下,那么在/opt/svnroot目录下执行mkdir repository新建版本库文件夹,通过svnadmin create repository/test命令可创建名为test的版本库。若创建成功,则subversion的安装便已成功完成。使用mkdir -p import/{trunk,branches,tags} 命令在/opt/svnroot目录下建立一个名为import的新文件夹,包含trunk、branches、tags 三个子目录。下面这条语句将把路径/opt/svnroot/import下的目录和文件导入到你创建的Subversion 仓库中去,提交后的修订版为1。

svn import /opt/svnroot/import file:///opt/svnroot/repository/test -m "Init repository"

这里/opt/svnroot/import可以使用相对路径,但file:///opt/svnroot/repository/test必须以绝对路径表示。

分类: Linux 标签: , , ,

nginx下wordpress的伪静态配置

2011年8月31日 没有评论

本来起初自己在nginx来配置转发规则,但有些连接转发有问题,后来在网上查了一下,原来借助nginx的try_files指令,只需要一行配置就可以搞定伪静态配置了。代码如下:

try_files $uri $uri/ /index.php?q=$uri&$args;

更多关于try_files的知识,参看:http://wiki.nginx.org/NginxHttpCoreModule#try_files

分类: Linux 标签: , ,

apache配置中ProxyPassReverse指令的含义

2011年8月27日 没有评论

apache中的mod_proxy模块主要作用就是进行url的转发,即具有代理的功能。应用此功能,可以很方便的实现同tomcat等应用服务器的整合,甚者可以很方便的实现web集群的功能。

例如使用apache作为域名www.test.com代理服务器,让其暴露在公网上,即DNS解析到本机器上,真正提供web服务器的是另一台位于同一内网的机器上,假设起IP是192.168.100.22,那么只需要如下配置就可以了。

ProxyPass / http://192.168.100.22/

ProxyPassReverse / http://192.168.100.22/

ProxyPass 很好理解,就是把所有来自客户端对http://www.test.com的请求转发给http://192.168.100.22上进行处理,ProxyPassReverse 的配置总是和ProxyPass 一致,但用途很让人费解。似乎去掉它很能很好的工作,事实真的是这样么,其实不然,如果响应中有302重定向,ProxyPassReverse就派上用场。举例说明,假设用户访问http://www.test.com/exam.php,通过转发交给http://192.168.100.22/exam.php处理,假定exam.php处理的结果是实现redirect到login.php(使用相对路径,即省略了域名信息),如果没有配置反向代理,客户端收到的请求响应是重定向操作,并且重定向目的url为http://192.168.100.22/login.php ,而这个地址只是代理服务器能访问到的,可想而知,客户端肯定是打不开的,反之如果配置了反向代理,则会在转交HTTP重定向应答到客户端之前调整它为http://www.test.com/login.php,即是在原请求之后追加上了redirect的路径。当客户端再次请求http://www.test.com/login.php,代理服务器再次工作把其转发到http://192.168.100.22/login.php。

客户端到服务器称之为正向代理,那服务器到客户端就叫反向代理。

sed,awk使用小记

2011年8月25日 没有评论

awk 默认是用空格作为分隔符,后面的大括号需要用单引号引起来,不能用双引号,否则就得不到想要的结果,如果要指定分隔符,使用 -F 分隔符。例如从文本-rw-r–r– 1 root root 165 Aug 25 12:51 runAll.sh中获取165,可以使用命令:echo “-rw-r–r– 1 root root 165 Aug 25 12:51 runAll.sh” | awk -F” ” ‘{print $5}’,其中 awk -F” ” ‘可以省略.。

sed -e  patt 中的patt需要用引号引起来,单引号双引号都行。sed能很方便的将文本中指定字符串替换成另外的字符串,配合其他的命令可以一次性把一个目录下所有文件进行替换操作。例如把文本 “start zhou yang end”替换成“start yang zhou  end”, 即把yang前面的一个单词和与yang换位置,可以使用命令:

echo "start zhou yang end" | sed -e 's/ \(.*\) \(yang\)/ \2 \1/g'

。命令:

grep "114.87.189.33"  * -R | awk -F: '{print $1}' |sort |uniq | xargs sed -i "s/114.87.189.33/214.187.189.33/g"

则会把当前目录下所有文件的114.87.189.33替换成214.187.189.33。注意sed的patt里很多符号需要转义的,比喻()等,g表示替换全部。

关于sed,awk的用户可以参看 linux下监控网卡流量的shell脚本 中的用法。

另外在shell中把命令的输出结果存放在一个变量可以用以下两种方式

1,$var = `cmd`

2,  $var = $(cmd)

分类: Linux 标签: , ,

linux下监控网卡流量的shell脚本

2011年8月25日 没有评论

linux下可以很容易获取网卡信息,使用命令 cat /proc/net/dev 即可。该命令详细列出当前网卡流入流出的字节总数,要监控网络的流量,只需要按一定的时间间隔去读取流量信息,然后做一下简单的四则运算即可。附完整的脚本如下:

#!/bin/bash

usage() {
        echo "Useage : $0"
        echo "eg. sh $0 eth0 2"
        exit 1
}

if [ $# -lt 2 ]
then
        usage
fi

eth=$1
timer=$2

in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk '{print $1 }')
out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk '{print $9 }')

while true
do
        sleep ${timer}
        in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk '{print $1 }')
        out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk '{print $9 }')
        dif_in=$(((in-in_old)/timer))
        dif_in=$((dif_in/1024))
        dif_out=$(((out-out_old)/timer))
        dif_out=$((dif_out/1024))
        ct=$(date +"%F %H:%M:%S")
        echo "${ct} -- IN: ${dif_in} KByte/s     OUT: ${dif_out} KByte/s"
        in_old=${in}
        out_old=${out}
done

exit 0
分类: Linux 标签: , ,

linux下sort命令使用笔记

2011年8月25日 没有评论

sort,顾名思义就是用来排序的,不关可以对已存在的文件中的行进行排序,也能够对管道输出进行排序。该命令常用的参数有如下一些:

-f		将小写字母与大写字母同等对待,即忽略大小写
-n		按数字(算术值)大小排序
-r		降序的形式来排序,默认是升序
-o		排序的结果输出到指定文件,如果输出文件是输入文件之一,
		sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。
-i		比较中忽略任何非显示字符
-t"sepchar"	指定sepchar为单一的字段分隔符,把行分割成多个列,
		可以对指定列一个或多个列来作为排序字段
+pos1 -pos2	pos为列的index,指定一个或几个字段作为排序关键字,
		字段位置从posl开始,到pos2为止(包括posl,不包括pos2
		也可以通过-k来达到+pos1 -pos2的选择关键列的目的

sort默认是把一行的所有信息都作为排序关键字,下面通过例子来说明按任意字段来作为关键字的排序

例如文本(文件名为test.txt)如下:

yams:104
turnips:8
potatoes:15
carrots:104
green beans:32
radishes:5
lettuce:15

需要按照“:”后面的数值大小进行排序,第一步要找到一个字符来作为分隔符,这里一目了然的就可以选择“:”,第二步确定该列是第几列,注意列的编号是从0开始的,所以这里排序的关键字段就是第一列,另外需要注意的是按照数字的大小来排序,所以不能忘记 -n,否则得到的结果不是预期的,按字符排序的话108 < 15 < 32 < 5。根据分析得到的命令就是:sort -t: +1 -2 -n test.txt 执行的结果如下:

radishes:5
turnips:8
lettuce:15
potatoes:15
green beans:32
carrots:104
yams:104

同样可以使用 -k来代替 +1 -2指定排序关键列,例如:sort -t: -k2 -n test.txt, 注意: -k指定的列是编号是从1开始的。

分类: Linux 标签: ,

Centos下连接打印机

2011年8月24日 没有评论

利用cups能正确连接到打印机。在浏览器中输入 http://localhost:631/ 后出来配置界面,选择 “Add Printer”,在name中输入打印机的名字(本地显示的名字),Location输入打印机的IP地址,下一步是选择设备,在Device中选择打印机对应的设置,例如:AppScoket/HP JetDirect,下一步,Device URI填写socket://打印机的IP,再下一步在Make中选择HP(实际根据打印机的型号来选择),下一步出来的Model中选择对应的驱动,然后点 “Add Printer”即完成打印机的连接。

另外通过系统-〉管理-〉正在打印 中可以看到刚才安装的打印机。

分类: Linux 标签: , ,

windows下使用SecureCRT登陆AWS EC2服务器

2011年8月17日 2 条评论

SecureCRT是windows下一款连接linux服务器的优秀软件,通过它可以方便的操作多台服务器,如果是自己的服务器,知道帐号密码,很轻松就能连上服务器,AWS的EC2服务器不是采用用户名加密码的认证方式,而是用密钥来认证,在创建instance时,会提示使用以前(如果存在)或创建一个新的key pair,同时会提示下载一个xxx.pem的密钥文件到本地硬盘,在Linux下使用terminal登陆aws的ec2很容易,例如:ssh -i xxx.pem ec2-user@public dns,用户名固定是ec2-user,注意xxx.pem的权限是600,public dns在web的管理后台选中某个instance,在Description可以找到,但是SecureCRT中不能直接使用xxx.pem,需要借助linux系统创建一个xxx.pem对应的xxx.pem.pub文件,具体操作如下:

1 上传文件到linux系统下,确保其权限是600, 命令 chmod 600 xxx.pub
2 改写密钥格式为 OpenSSH,如果询问passphrase可以留空(直接回车)命令 ssh-keygen -p -f xxxx.pem
3 生成公密钥 .pub 文件 命令 ssh-keygen -e -f xxxx.pem > xxxx.pem.pub

至此,就创建了在SecureCRT中所使用的验证文件.

在SecureCRT选连接->新建会话->协议选择ssh2 下一步 -> 主机名填写public dns 下一步,用户名填写ec2-user 下一步 -> 完成.
在连接的列表中找到刚创建的连接,右键属性,左边树中选择SSH2,然后选择右边鉴权中公钥,点属性,在出来的对话框中选择使用身份或证书文件,通过浏览文件指定到刚在Linux下生成的文件即可.注意xxx.pem.pub和xxx.pem要在同一文件夹下,而且公钥的文件名一定要是下载下来的文件名后加.pub,否则会提示找不到私钥的.

分类: Linux 标签: , , , ,

linux下shell的浮点数四则运算

2011年8月14日 没有评论

shell下的四则运算有两种方式,一个是使用expr,另外一个用$(()),例如 expr 数1 运算符(+-*/)  数2或$(( 数1 运算符(+-*/)  数2)),需要注意的是使用expr时操作符的前后需要一个空格.但是上述两个都不能进行浮点数的运算,为了达到计算浮点数,可以借助命令awk来实现.例如 awk ‘BEGIN{print 7.01/5+2.3 }’执行后结果为3.702.如果两个操作数是保存在变量中,必然 a=2.2,b=5,需要计算a除以b该怎么操作呢? awk ‘{print $a/$b}’,很可惜,这样是不行的,似乎在awk里面无法通过$a来获取变量的值,但是可以通过echo的方式把变量值传入, echo “$a $b” | awk ‘{print $1/$2}’,这样就可以了,如果还是操作数,都加在echo中就行了.

分类: Linux 标签: , , , ,

无觅相关文章插件,快速提升流量