说来也真是的,linux也折腾了好几年,这两个最简单也最复杂的命令却没搞定,惭愧呀。
先说tar,这个命令我一直认为功能超强,这次却遇到了麻烦
一共有好几百tar ball,现在要全部解开,直接写tar xvf access_log*.tar 报错,记得有个-T参数可以输入一个文件列表,结果折腾了半天也没成功,最后只能求助于awk了,用了笨笨的办法解决。
# ll *.tar >dirlist
dirlist的内容:
-rw-r--r-- 1 root root 162498560 Nov 15 15:54 access_log.20041108.46.1.161845.tar
-rw-r--r-- 1 root root 102400 Nov 15 15:54 access_log.20041108.46.1.162221.tar
-rw-r--r-- 1 root root 20480 Nov 15 15:54 access_log.20041108.46.1.162400.tar
-rw-r--r-- 1 root root 71680 Nov 15 15:54 access_log.20041108.46.1.162849.tar
-rw-r--r-- 1 root root 14868480 Nov 15 15:54 access_log.20041109.46.2.095845.tar
.....................
# awk '{print $9}' dirlist >logfilelist
logfilelist的内容:
access_log.20041108.46.1.161845.tar
access_log.20041108.46.1.162221.tar
access_log.20041108.46.1.162400.tar
access_log.20041108.46.1.162849.tar
access_log.20041109.46.2.095845.tar
.............................
# awk '{print "tar vxf "$1}' logfilelist >tarxlog
# chmod +x tarxlog
# ./tarxlog
总算如愿。本来还想看看mc中行不行呢,无奈redhat as3默认没安装mc,作罢。
再来说date,又是一个再简单不过的命令,我想做的是输出上一小时的时间
也就是,现在的时间是Tue Nov 16 19:22:40 CST 2004
我要的输出时间是Tue Nov 16 18:22:40 CST 2004
找了半天,最流行的用法是date --date="yesterday"显示昨天的日期时间
于是顺藤摸瓜,找到
date --date="tomorrow"
date --date="hour"
大家可以试试都是什么,其中hour最好玩,竟然是输出一小时后的时间,而我要一小时前的时间,离胜利越来越近啦!
又试了很多参数,都是错的,终于,找到了!
date --date="-1 hour" 竟然行,哈哈
同理
date --date="-1 minute"
date --date="-1 day"
哈哈,这才是通用的做法呀。看到很多人在CU上问这种问题,终于找到了答案,幸福幸福。