今天发现nginx缓存的文件有点奇怪,文件时间是2008年的,也就是说服务器后端的文件的时间也就是缓存文件的时间,这个一下子有点困惑我,如果要删掉过期的文件岂不是没戏?
想来并非如此,linux下的文件属性有好多,find命令就有这些参数,比如:
一共有三个参数:ctime、atime、mtime
这三个参数是怎么看呢?用个例子看:
回到文章开始,要删掉缓存了1小时的文件,那可以按ctime找文件即可~
想来并非如此,linux下的文件属性有好多,find命令就有这些参数,比如:
-daystart
Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) from the beginning of today rather than from 24hours ago.
Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) from the beginning of today rather than from 24hours ago.
一共有三个参数:ctime、atime、mtime
这三个参数是怎么看呢?用个例子看:
[root@aslibra www]# touch aslibra.log
[root@aslibra www]# ll aslibra.log
-rw-r--r-- 1 root root 0 Jul 17 23:00 aslibra.log
#文件创建时间23:00
[root@aslibra www]# sleep 60;echo http://www.aslibra.com>aslibra.log ;ls -l aslibra.log
-rw-r--r-- 1 root root 23 Jul 17 23:02 aslibra.log
#修改文件后,时间会变动
[root@aslibra www]# ls -cl aslibra.log;sleep 60;chmod +x aslibra.log ;ls -l aslibra.log ;ls -cl aslibra.log
-rw-r--r-- 1 root root 23 Jul 17 23:02 aslibra.log
-rwxr-xr-x 1 root root 23 Jul 17 23:02 aslibra.log
-rwxr-xr-x 1 root root 23 Jul 17 23:03 aslibra.log
#改变文件属性,修改时间没有变,ctime改变了
[root@aslibra www]# ls -ul aslibra.log;cat aslibra.log ;sleep 60;ls -ul aslibra.log
-rwxr-xr-x 1 root root 23 Jul 17 23:00 aslibra.log
http://www.aslibra.com
-rwxr-xr-x 1 root root 23 Jul 17 23:06 aslibra.log
#访问文件后,atime改变了,可以有另外的方法看三个属性:
[root@aslibra www]# stat aslibra.log
File: `aslibra.log'
Size: 23 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 718232 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-07-17 23:06:46.153378656 +0800
Modify: 2009-07-17 23:37:50.166005664 +0800
Change: 2009-07-17 23:37:50.166005664 +0800
[root@aslibra www]# ll aslibra.log
-rw-r--r-- 1 root root 0 Jul 17 23:00 aslibra.log
#文件创建时间23:00
[root@aslibra www]# sleep 60;echo http://www.aslibra.com>aslibra.log ;ls -l aslibra.log
-rw-r--r-- 1 root root 23 Jul 17 23:02 aslibra.log
#修改文件后,时间会变动
[root@aslibra www]# ls -cl aslibra.log;sleep 60;chmod +x aslibra.log ;ls -l aslibra.log ;ls -cl aslibra.log
-rw-r--r-- 1 root root 23 Jul 17 23:02 aslibra.log
-rwxr-xr-x 1 root root 23 Jul 17 23:02 aslibra.log
-rwxr-xr-x 1 root root 23 Jul 17 23:03 aslibra.log
#改变文件属性,修改时间没有变,ctime改变了
[root@aslibra www]# ls -ul aslibra.log;cat aslibra.log ;sleep 60;ls -ul aslibra.log
-rwxr-xr-x 1 root root 23 Jul 17 23:00 aslibra.log
http://www.aslibra.com
-rwxr-xr-x 1 root root 23 Jul 17 23:06 aslibra.log
#访问文件后,atime改变了,可以有另外的方法看三个属性:
[root@aslibra www]# stat aslibra.log
File: `aslibra.log'
Size: 23 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 718232 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-07-17 23:06:46.153378656 +0800
Modify: 2009-07-17 23:37:50.166005664 +0800
Change: 2009-07-17 23:37:50.166005664 +0800
引用
Linux下的文件有3个时间属性
access time (atime): 对文件访问的时间
modification time (mtime): 文件内容修改的时间
change time (ctime): 文件属性(比如权限)修改的时间。一般mtime改变时ctime也会改变。
但是没有创建的时间。用stat命令可以看到这几个时间。用ls也可以,但是麻烦一些
access time (atime): 对文件访问的时间
modification time (mtime): 文件内容修改的时间
change time (ctime): 文件属性(比如权限)修改的时间。一般mtime改变时ctime也会改变。
但是没有创建的时间。用stat命令可以看到这几个时间。用ls也可以,但是麻烦一些
回到文章开始,要删掉缓存了1小时的文件,那可以按ctime找文件即可~
如果你有大批的文件需要重命名,但有那么一点规律可循,那你可以简单的用shell来处理
下面举个例子,假设我有 xx-abc.txt 的文件,都要去掉前面的xx-
完成了,很简单吧~
awk整理命令的编程可以处理更加复杂的任务,自己可以灵活处理
下面举个例子,假设我有 xx-abc.txt 的文件,都要去掉前面的xx-
[root@aslibra www.aslibra.com]# ll
total 0
[root@aslibra www.aslibra.com]# touch a-b.txt
[root@aslibra www.aslibra.com]# touch a-c.txt
[root@aslibra www.aslibra.com]# ls
a-b.txt a-c.txt
#说明:文件已经创建
[root@aslibra www.aslibra.com]# ls | awk -F '-' '{print "mv "$0" "$2}'
mv a-b.txt b.txt
mv a-c.txt c.txt
#说明:用awk整理好命令,用-作为分隔符,打印出命令即可
[root@aslibra www.aslibra.com]# ls | awk -F '-' '{print "mv "$0" "$2}'| /bin/bash
#说明:测试无误则可以用管道方式交给bash执行啦
[root@aslibra www.aslibra.com]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 12 12:57 b.txt
-rw-r--r-- 1 root root 0 Jul 12 12:57 c.txt
total 0
[root@aslibra www.aslibra.com]# touch a-b.txt
[root@aslibra www.aslibra.com]# touch a-c.txt
[root@aslibra www.aslibra.com]# ls
a-b.txt a-c.txt
#说明:文件已经创建
[root@aslibra www.aslibra.com]# ls | awk -F '-' '{print "mv "$0" "$2}'
mv a-b.txt b.txt
mv a-c.txt c.txt
#说明:用awk整理好命令,用-作为分隔符,打印出命令即可
[root@aslibra www.aslibra.com]# ls | awk -F '-' '{print "mv "$0" "$2}'| /bin/bash
#说明:测试无误则可以用管道方式交给bash执行啦
[root@aslibra www.aslibra.com]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 12 12:57 b.txt
-rw-r--r-- 1 root root 0 Jul 12 12:57 c.txt
完成了,很简单吧~
awk整理命令的编程可以处理更加复杂的任务,自己可以灵活处理
听说Ubuntu做的很不错,我是一直想试试,给笔记本弄个双系统。
问过一些人都可能这个用的比较多,最近出新版本,支持一下。
也有很多人是平时用的linux,备用是winxp。
看过这么一篇文章:《完全用 GNU/Linux 工作》
也的确,我们受windows毒害太深了!有能力的同学还是可以尝试一些linux或者apple~
今天还没想着要格式化分区给ubuntu,刻录了一份最新的destop版本。
放进光驱里,发现了一个新选项: install inside windows
也就是类似windows程序安装的,其实有点类似虚拟机,但是又是双系统,主要是空间分配方面是使用的文件空间,磁盘读写性能估计会有一些差,但应该不太影响体验,为了图新鲜,我就决定试用此选项。
在笔记本上找了个盘,空了些空间,然后就准备安装了。
首先是复制文件,然后会给启动菜单多一个ubuntu,复制文件完毕后,重启时你可以选择ubuntu,进入系统后会继续安装过程,安装不太理想的地方就是语言包的步骤,可能是访问网络的缘故,一直没进展,弄得我好失望,但也没甘心,关机后重新进入,此时系统报错,因为没有安装成功的缘故。所以重新进入windows,删除了,再次安装。
有人碰到类似情况:http://forum.ubuntu.org.cn/viewtopic.php?t=203360
虽然选择的是english,可发现还是中文界面,还是有点问题,后来在安装过程中等待的步骤我拔了网线,结果就继续了,成功安装完毕。
进入系统后,主要的问题是语言包没有安装成功,还是需要继续安装。
在配置前,最好是可以在软件源里面挑选最快的服务器,这样更新起来不太费力。
语言包更新后,界面不太清晰,这个是个问题。。还没解决。
缺少的软件都可以自动更新,这个功能很舒服!比如打开avi和rmvb之类的文件,它会自动下载需要的文件并安装了,可以看电影拉~~
然后就是显卡驱动,进入系统管理-》硬件驱动,可以更新显卡驱动:

显卡驱动安装后,看电影体验顺畅多了,还可以玩一下视觉效果,那些比较眩的功能不太喜好,实在的东西还是值得说:
1 系统自动兼容上ntfs格式,可以直接读写windows下的所有文件,这样真的太棒了
2 多窗口管理让你的工作更加清晰,不受影响,体验会很好的,这个是linux下一直都很实用的管理方式
但ubuntu下管理更加方便,win+E可以显示所有窗口:

在这里你可以拖动窗体到其他区域,双击可以到该区域,工作很便利。
win+R可以放大当前窗口适应全屏大小,需要看细节的时候真方便,点击桌面再按win+E恢复,可能有别的方式,有待发现~
win键没有浪费,这个真有趣
3 下个QQ吧:http://im.qq.com/qq/linux/download.shtml
4 输入法智能全拼做的已经很不错!
5 经常有需要确认密码的地方,感觉有一点不便,也许可以调整一下
6 浏览网页没有问题,firefox大家应该没有什么不适的
7 娱乐方面可能有点不太满足,看电影字幕还是有点问题,有点编码问题和不能自动载入,听音乐有点差强了啦,还不习惯
8 办公软件如果不复杂,openoffice会足够了
9 邮件可能有点麻烦,未知
10 终端服务客户端可以连接windows的远程登陆,体验不错,也许以后就在linux下虚拟xp就够了
11 支持rar文件:命令行输入 sudo apt-get install rar
12 linux下的飞信 http://www.libfetion.cn/Linux_demoapp_download.html
问过一些人都可能这个用的比较多,最近出新版本,支持一下。
也有很多人是平时用的linux,备用是winxp。
看过这么一篇文章:《完全用 GNU/Linux 工作》
也的确,我们受windows毒害太深了!有能力的同学还是可以尝试一些linux或者apple~
今天还没想着要格式化分区给ubuntu,刻录了一份最新的destop版本。
放进光驱里,发现了一个新选项: install inside windows
也就是类似windows程序安装的,其实有点类似虚拟机,但是又是双系统,主要是空间分配方面是使用的文件空间,磁盘读写性能估计会有一些差,但应该不太影响体验,为了图新鲜,我就决定试用此选项。
在笔记本上找了个盘,空了些空间,然后就准备安装了。
首先是复制文件,然后会给启动菜单多一个ubuntu,复制文件完毕后,重启时你可以选择ubuntu,进入系统后会继续安装过程,安装不太理想的地方就是语言包的步骤,可能是访问网络的缘故,一直没进展,弄得我好失望,但也没甘心,关机后重新进入,此时系统报错,因为没有安装成功的缘故。所以重新进入windows,删除了,再次安装。
有人碰到类似情况:http://forum.ubuntu.org.cn/viewtopic.php?t=203360
虽然选择的是english,可发现还是中文界面,还是有点问题,后来在安装过程中等待的步骤我拔了网线,结果就继续了,成功安装完毕。
进入系统后,主要的问题是语言包没有安装成功,还是需要继续安装。
在配置前,最好是可以在软件源里面挑选最快的服务器,这样更新起来不太费力。
语言包更新后,界面不太清晰,这个是个问题。。还没解决。
缺少的软件都可以自动更新,这个功能很舒服!比如打开avi和rmvb之类的文件,它会自动下载需要的文件并安装了,可以看电影拉~~
然后就是显卡驱动,进入系统管理-》硬件驱动,可以更新显卡驱动:

显卡驱动安装后,看电影体验顺畅多了,还可以玩一下视觉效果,那些比较眩的功能不太喜好,实在的东西还是值得说:
1 系统自动兼容上ntfs格式,可以直接读写windows下的所有文件,这样真的太棒了
2 多窗口管理让你的工作更加清晰,不受影响,体验会很好的,这个是linux下一直都很实用的管理方式
但ubuntu下管理更加方便,win+E可以显示所有窗口:

在这里你可以拖动窗体到其他区域,双击可以到该区域,工作很便利。
win+R可以放大当前窗口适应全屏大小,需要看细节的时候真方便,点击桌面再按win+E恢复,可能有别的方式,有待发现~
win键没有浪费,这个真有趣
3 下个QQ吧:http://im.qq.com/qq/linux/download.shtml
4 输入法智能全拼做的已经很不错!
5 经常有需要确认密码的地方,感觉有一点不便,也许可以调整一下
6 浏览网页没有问题,firefox大家应该没有什么不适的
7 娱乐方面可能有点不太满足,看电影字幕还是有点问题,有点编码问题和不能自动载入,听音乐有点差强了啦,还不习惯
8 办公软件如果不复杂,openoffice会足够了
9 邮件可能有点麻烦,未知
10 终端服务客户端可以连接windows的远程登陆,体验不错,也许以后就在linux下虚拟xp就够了
11 支持rar文件:命令行输入 sudo apt-get install rar
12 linux下的飞信 http://www.libfetion.cn/Linux_demoapp_download.html
1 什么是shell
shell在系统中的位置: 用户->应用->shell->内核->硬件
shell是和内核亲密接触的,提供和内核之间的接口,可以写出功能很强大的脚本文件
2 有哪些类型
shell有很多版本:sh -> csh -> ksh -> bash -> tcsh ...
一般在 /bin/下
你要用哪个shell执行程序,则 /bin/sh file 或者 /bin/bash file
用当前默认shell执行可以这样 . file
或者你可以这样 /bin/bash < test.sh
shell都是读入程序代码执行的,在可执行脚本第一行可以指定执行的shell
3 程序参数
./test.sh a b c (abc就是参数)
内部可以获取参数情况:
$# 参数个数
$? 最后命令的完成码或者内部执行的shell返回值
$0 shell程序
$* 所有参数组成的字符串
$N 第N个参数
4 赋值
a=b;a="b c";a="b $HOME";a='b $HOME';a="${HOME}W"
let "j=i*5+1" 等同 ((j=i*5+1))
5 输入输出
echo "string">/tmp/a.txt
program >/dev/null 2>&1
/bin/bash < file
program >> log.txt
program | sort | uniq | wc -l >> log.txt
输出有两个类型,系统错误2和标准输出1
a文件不存在,cat会产生系统错误为2,2>&1可以转到标准输出
做一个示例脚本来说明问题,产生标准输出和错误输出(中文为注释):
shell在系统中的位置: 用户->应用->shell->内核->硬件
shell是和内核亲密接触的,提供和内核之间的接口,可以写出功能很强大的脚本文件
2 有哪些类型
shell有很多版本:sh -> csh -> ksh -> bash -> tcsh ...
一般在 /bin/下
你要用哪个shell执行程序,则 /bin/sh file 或者 /bin/bash file
用当前默认shell执行可以这样 . file
或者你可以这样 /bin/bash < test.sh
shell都是读入程序代码执行的,在可执行脚本第一行可以指定执行的shell
3 程序参数
./test.sh a b c (abc就是参数)
内部可以获取参数情况:
$# 参数个数
$? 最后命令的完成码或者内部执行的shell返回值
$0 shell程序
$* 所有参数组成的字符串
$N 第N个参数
4 赋值
a=b;a="b c";a="b $HOME";a='b $HOME';a="${HOME}W"
let "j=i*5+1" 等同 ((j=i*5+1))
5 输入输出
[root@localhost ~]# echo -n "your Name:";read myname;echo "Your name is "$myname
your Name:aslibra.com
Your name is aslibra.com
your Name:aslibra.com
Your name is aslibra.com
echo "string">/tmp/a.txt
program >/dev/null 2>&1
/bin/bash < file
program >> log.txt
program | sort | uniq | wc -l >> log.txt
输出有两个类型,系统错误2和标准输出1
a文件不存在,cat会产生系统错误为2,2>&1可以转到标准输出
做一个示例脚本来说明问题,产生标准输出和错误输出(中文为注释):
[root@aslibra ~]# cat test.sh
echo hello
echo -n `cat a`
[root@aslibra ~]# ./test.sh
hello
cat: a: No such file or directory
#第一行正常输出,第二行没有a文件,产生错误输出
[root@aslibra ~]# ./test.sh >output
cat: a: No such file or directory
#输出重定向到文件,也就不会在界面看到标准输出
[root@aslibra ~]# cat output
hello
#标准输出在文件里面
[root@aslibra ~]# ./test.sh >output 2>&1
#把错误输出输出到标准输出
[root@aslibra ~]# cat output
hello
cat: a: No such file or directory
#两个都在output文件里面了
[root@aslibra ~]# echo>output
#清空output文件
[root@aslibra ~]# ./test.sh >output 1>&2
hello
cat: a: No such file or directory
#把标准输出转到错误输出
[root@aslibra ~]# cat output
[root@aslibra ~]#
#这样output文件没有任何内容
echo hello
echo -n `cat a`
[root@aslibra ~]# ./test.sh
hello
cat: a: No such file or directory
#第一行正常输出,第二行没有a文件,产生错误输出
[root@aslibra ~]# ./test.sh >output
cat: a: No such file or directory
#输出重定向到文件,也就不会在界面看到标准输出
[root@aslibra ~]# cat output
hello
#标准输出在文件里面
[root@aslibra ~]# ./test.sh >output 2>&1
#把错误输出输出到标准输出
[root@aslibra ~]# cat output
hello
cat: a: No such file or directory
#两个都在output文件里面了
[root@aslibra ~]# echo>output
#清空output文件
[root@aslibra ~]# ./test.sh >output 1>&2
hello
cat: a: No such file or directory
#把标准输出转到错误输出
[root@aslibra ~]# cat output
[root@aslibra ~]#
#这样output文件没有任何内容
vi是linux下常用的命令,纯粹小结一下:
1 打开文件
vi filename
多文件切换 :next/prev
2 移动光标
方向键、ctrl+U/D
shift+H/M/L/G 屏幕第一行、中间、末尾,文件尾
:N 到第几行
^$ 行首末,跟正则意思一样
3 复制
yy复制行 yw复制单词
Nyy 复制N行
4 剪切/删除
x删除字符
dd 删除一行
Ndd 删除N行
5 粘贴
p/shift+h
6 查找
/xx 查找xx
n下一个,N上一个
7 保存退出
:wq 保存退出
:q! 直接退出不保存
8 撤销更改
u取消上次修改
U恢复此行改变
1 打开文件
vi filename
多文件切换 :next/prev
2 移动光标
方向键、ctrl+U/D
shift+H/M/L/G 屏幕第一行、中间、末尾,文件尾
:N 到第几行
^$ 行首末,跟正则意思一样
3 复制
yy复制行 yw复制单词
Nyy 复制N行
4 剪切/删除
x删除字符
dd 删除一行
Ndd 删除N行
5 粘贴
p/shift+h
6 查找
/xx 查找xx
n下一个,N上一个
7 保存退出
:wq 保存退出
:q! 直接退出不保存
8 撤销更改
u取消上次修改
U恢复此行改变
某机器安装时默认是中文,ssh登录总能发现很多不爽的问号,还错行:
修改默认语言环境就好了:
也就是更换 zh_cn为en_us
重新登录就可以了,一切是多么美好
更多请参考:redhat 语言环境
[root@aslibra root]# df
?? 1K-?頠 ?? ??à??% 1???/dev/hdc3 286213020 23486912 248187284 9% /
?? 1K-?頠 ?? ??à??% 1???/dev/hdc3 286213020 23486912 248187284 9% /
修改默认语言环境就好了:
[root@aslibra root]# cat /etc/sysconfig/i18n
LANG="en_US"
SUPPORTED="en_US.UTF-8:en_US:en"
#LANG="zh_CN.GB18030"
#LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
#SUPPORTED="zh_CN.GB18030:zh_CN:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
LANG="en_US"
SUPPORTED="en_US.UTF-8:en_US:en"
#LANG="zh_CN.GB18030"
#LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
#SUPPORTED="zh_CN.GB18030:zh_CN:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
也就是更换 zh_cn为en_us
[root@aslibra root]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hdc3 286213020 23493344 248180852 9% /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hdc3 286213020 23493344 248180852 9% /
重新登录就可以了,一切是多么美好
更多请参考:redhat 语言环境
某些时候我们需要完成一个任务,把任务分成好多次完成,在网页里自我刷新,直到完成。
比如某个PHP(self.php):
实现不断处理有几个方式:
1 打开浏览器,访问此地址即可,让它自己跳转。如果有redirect限制,那最好可以改用脚本实现
2 wget方式
wget默认会follow返回的信息的location指令,但经过20次后就自动停止:
3 curl
curl默认不跟踪location指令
但加个参数即可:
其中 -L 即可follow,而默认是50次左右
自己可以设定多一些:
比如某个PHP(self.php):
<?
//do something
sleep(1);
//redirect
header("location:self.php?t=".time());
?>OK!
//do something
sleep(1);
//redirect
header("location:self.php?t=".time());
?>OK!
实现不断处理有几个方式:
1 打开浏览器,访问此地址即可,让它自己跳转。如果有redirect限制,那最好可以改用脚本实现
2 wget方式
wget默认会follow返回的信息的location指令,但经过20次后就自动停止:
引用
20 redirections exceeded
3 curl
curl默认不跟踪location指令
但加个参数即可:
curl -h
...
-L/--location Follow Location: hints (H)
--location-trusted Follow Location: and send authentication even
to other hostnames (H)
-m/--max-time <seconds> Maximum time allowed for the transfer
--max-redirs <num> Maximum number of redirects allowed (H)
--max-filesize <bytes> Maximum file size to download (H/F)
...
...
-L/--location Follow Location: hints (H)
--location-trusted Follow Location: and send authentication even
to other hostnames (H)
-m/--max-time <seconds> Maximum time allowed for the transfer
--max-redirs <num> Maximum number of redirects allowed (H)
--max-filesize <bytes> Maximum file size to download (H/F)
...
其中 -L 即可follow,而默认是50次左右
引用
curl: (47) Maximum (50) redirects followed
自己可以设定多一些:
curl -L --max-redirs 100000 URL






