092010

#!/bin/bash
#自动检测论坛php是否挂了

while true
do
URL=" http://bbs.example.cn"
RETURN=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`
if [ $RETURN != '200' ];then
/data/sh/fastcgi_restart
fi
sleep 12
done

Posted by admin Tagged with:
232010

#!/bin/bash
#目录名类似于20100315,20100315long,20100316,20100316zhong,20100317等
#用法 sh count_dir_size.sh 日期最小数,日期最大数
#如果是2010-03-15到2010-03-17,则sh count_dir_size.sh 2010-03-15 2010-03-17
#Author johncan,2010-03-22
#COUNT_DATE=`date "+%Y%m%d" |cut -c1-5`
if [ -z "$1" ]
then
echo "please use $0 start_day end_day"
exit 1
fi

#将开始时间转换成时间戳
STA_TIME=`date -d "$1" +%s`
#将结束时间转换成时间戳
END_TIME=`date -d "$2" +%s`

cd /dir_which_files_are_stored

DR_TIME=${STA_TIME}
while [ "${DR_TIME}" -le "${END_TIME}" ]
do
#将时间戳转换为目录名的格式
STAND_DR_TIME=`date -d "1970-01-01 UTC ${DR_TIME} seconds" +%Y%m%d`
for DR in ${STAND_DR_TIME}*
do
#统计目录大小
DR_SIZE=`du -s ${DR} | awk '{print $1}'`
let "COUNT_DR_SIZE=${COUNT_DR_SIZE}+${DR_SIZE}"
done
let "DR_TIME=${DR_TIME}+86400"
done
echo ${COUNT_DR_SIZE}KB

Posted by admin Tagged with: ,
202010

shell字符串的截取的问题:
一、Linux shell 截取字符变量的前8位,有方法如下:
1.expr substr “$a” 1 8
2.echo $a|awk ‘{print substr(,1,8)}’
3.echo $a|cut -c1-8
4.echo $
5.expr $a : ‘\(.\\).*’
6.echo $a|dd bs=1 count=8 2>/dev/null

二、按指定的字符串截取
1、第一种方法:
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
“*”只是一个通配符可以不要

例子:
$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg

2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。

可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga

这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

三、按照指定要求分割:
比如获取后缀名
ls -al | cut -d “.” -f2
转载自:http://tech.foolpig.com/2008/07/09/linux-shell-char/

Posted by admin Tagged with:
042010

awk 'BEGIN{print "'\''"}'

awk '{print " '\'' "}'
其中: '\'' 这三个' 都是单引号

转载自:http://bbs.chinaunix.net/viewthread.php?tid=15773&extra=&page=2

Posted by admin Tagged with: ,
292010

[root@test200 ~]# cat test
a
b
c
d
e
f
[root@test200 ~]# sed '/c/{p;:a;N;$!ba;d}' test
a
b
c

定义一个标签a,匹配c,然后N把下一行加到模式空间里,匹配最后一行时,才退出标签循环,然后命令d,把这个模式空间里的内容全部清除。

if 匹配"c"
:a
追加下一行
if 不匹配"$"
goto a
最后退出循环,d命令删除。

Posted by admin Tagged with: ,