Mysql备份脚本 带压缩 显示压缩率 日志

03月 21st, 2008

#!/bin/sh
#
# Copyright (C), 2007 bug All Rights Reserved

# Title       : Database Backup Script
# Author      : BUG
# File        : db_bak.sh
# Version     : 1.1.0
# Date        : 2008-03-21
# Email       : efbbb27115@homtail.com
# License     : General Public License (GPL) v2
# Description : Database Backup Script
#

initial() {

    echo -en “\33[2J"

    echo -en "\33[0;0H"

    echo -en "\33[32m"

    echo "------------------------------------------------------------"

    echo "---                Database Backup Script                ---"

    echo "------------------------------------------------------------"

    echo -en "\33[37m"

    stty -echo

    umask 077

    mysqln=`echo 'show databases;' | /usr/local/mysql/bin/mysql -psjldafhkg | sed -n '3,$p'`

    mysqlu="root"

    mysqlp="********"

    binpath="/usr/local/mysql/bin"

    dstpath="/pri/bak/sql_bak/"

    runuser=`ps aux | grep $$ | sed -n "1p" | awk '{ print $1 }'`

    mkdir -p $dstpath/`date +%y%m%d`

    exec 3>>$dstpath/`date +%y%m%d`/db_bak.log

}initialecho -e "\n[`date +%y/%m/%d\ %H:%M:%S`] Database Backup Script start by $runuser PID:$$” >&3if [ -f "$dstpath/`date +%y%m%d`/lock" ]

then

    echo -e “\33[33mIt's has completed by `cat $dstpath/\`date +%y%m%d\`/lock`!!!\33[37m"

    echo "[`date +%y/%m/%d\ %H:%M:%S`] It’s has completed by `cat $dstpath/\`date +%y%m%d\`/lock`!!!” >&3

else

    echo -e “Database\tExport\tCompress\tSql\tTgz\tRate”

    echo -e “\33[32m------------------------------------------------------------\33[37m"

    cd $dstpath/`date +%y%m%d`

    for db in $mysqln

    do

    echo -n "$db"

    $binpath/mysqldump --opt -u$mysqlu -p$mysqlp $db > $dstpath/`date +%y%m%d`/$db.sql 2> /dev/null

    RETVAL1=$?

    if [ $RETVAL1 -eq 0 ]

    then

    sqlsize=`du -k $db.sql | cut -f1`

    echo -n “[`date +%y/%m/%d\ %H:%M:%S`]“ >&3

    echo -n “$db” | awk ‘{printf ” %-17s”, $1}’ >&3

    echo -n “OK  ” >&3

    echo -en “\r\t\t  \33[32mOK\33[37m\t"

    tar -czvf $db.tgz $db.sql > /dev/null 2>&1

        RETVAL2=$?

        if [ $RETVAL2 -eq 0 ]

        then

        tgzsize=`du -k $db.tgz | cut -f1`

        echo “OK” >&3

        rm -f $dstpath/`date +%y%m%d`/$db.sql

        echo -en “   \33[32mOK\33[37m"

        echo -en "\33[33m"

        echo -en "$sqlsize" | awk '{printf "%12dKB", $1}'

        echo -en "$tgzsize" | awk '{printf "%6sKB", $1}'

        echo "$sqlsize $tgzsize" | awk '{printf "%8.0f%",$2/$1*100}'

        echo -e "\33[37m"

        else

        echo "Compress fail return $RETVAL2" >&3

        echo -e "  \33[31mfail\33[37m"

        fi

    else

    echo -n "[`date +%y/%m/%d\ %H:%M:%S`]“ >&3

    echo -n “$db” | awk ‘{printf ” %-17s “, $1}’ >&3

    echo “Export fail return $RETVAL1″ >&3

    echo -en “\r\t\t   \33[31mfail\33[37m”

    fi

    done

    echo “`date +%H:%M:%S`”>$dstpath/`date +%y%m%d`/lock

fi

非常经典,几十条

03月 13th, 2008

人生的最大遗憾莫过于错误地坚持了不该坚持的,轻易地放弃了不该放弃的……
新式morning call——生前何必久睡,死后自会长眠
使你疲劳的不是远方的高山,而且是你鞋里面的一粒砂子
有时在饭堂排队打饭时最大的欣慰不是前面的人越来越少而是后面等的人越来越多
逆风的方向,更适合飞翔。我不怕万人阻挡,只怕自己投降
酒,装在瓶里像水,喝到肚里闹鬼,说起话来走嘴,走起路来闪腿,半夜起来找水,早上起来后悔,中午酒杯一端还是挺美。
你要不理我我就成包子了…而且还是天津最有名的…嘿嘿…
妈妈说人最好不要错过两样东西,最后一班回家的车和一个深爱你的人
我问一个在深圳工作了二十年的朋友:”如果你死后,你的墓志铭打算写点啥?”他说:”我解决了住房问题!”
那天看到一位大妈在烧纸,边烧边嘟囔着:收到了全都买基金吧~~
学问之美,在于使人一头雾水;诗歌之美,在于煽动男女出轨;女人之美,在于蠢得无怨无悔;男人之美,在于说谎说得白日见鬼
如果你看到面前的阴影,别怕,那是因为你的背后有阳光
诸葛亮出山前,也没带过兵!凭啥我就要工作经验?
本人made in china,出厂日期1981年X月X日,长180cm,净重67kg。采用人工智能,各部分零件齐全,运转稳定,经二十多年的运行,属信得过产品。该产品手续齐全,无限期包退包换。现因发展需要,诚招志同道合者共同研制开发第二代产品,有意者请联系!
干掉熊猫,我就是国宝!
我能容忍身材是假的,脸是假的,胸是假的,臀是假的!!!但就是不容忍钱是假的!!!!
脱机的人永远不知道联机的人等了她多久……
紧 急 通 知:请准备一寸彩照,身份证复印件,学历复印件,个人简历,送到国家航天局,据可靠消息,为庆祝中秋,要招聘嫦娥!(自带兔子)
命运负责洗牌,但是玩牌的是我们自己!
问世间情为何物,不过一物降一物~
如果中了一千万,我就去买30套房子租给别人,每天都去收一次房租。哇咔咔~~充实!
上帝欲使人灭亡,必先使其疯狂;上帝欲使 人疯狂,必先使其买房
我们走得太快,灵魂都跟不上了……
问:你喜欢我哪一点?答:我喜欢你离我远一点!
你看得见我打在屏幕上的字,却看不到我掉在键盘上的泪
大师兄,你知道吗?二师兄的肉现在比师傅的都贵了
很久很久以前,谎言和真实在河边洗澡,谎言先洗好,穿了真实的衣服离开,真实却不肯穿谎言的衣服。后来,在人们的眼里,只有穿着真实衣服的谎言,却很难接受赤裸裸的真实
忙碌是一种幸福,让我们没时间体会痛苦,奔波是一种快乐,让我们真实的感受生活,疲惫是一种享受,让我们无暇空虚,愿你的生活多姿多彩,永远开心!
在非洲,瞪羚每天早上醒来时,他知道自己必须跑的比最快的狮子还快,否则就会被吃掉.狮子每天早上醒来时,他知道自己必须追上跑得最慢的瞪羚,否则就会被饿死.不管你是狮子还是瞪羚,当太阳升起时,你最好开始奔跑
任盈盈教令狐冲弹琴,后来她爱上了令狐冲;岳灵珊教林平之武功,后来她爱上了林平之;小龙女教杨过武功,后来她爱上了杨过;老顽童教瑛姑武功,后来他爱上了瑛姑;但是,怎么没有一个教我课的女老师或是女助教爱上我呢?
听说女人如衣服,兄弟如手足,回想起来,我竟然七手八脚地裸奔了19年!
骑白马的不一定是王子,他可能是唐僧;带翅膀的也不一定是天使——妈妈说,那是鸟人
爱一个人就是在拔通电话时,忽然不知道说什么好,原来只是想听听那熟悉的声音,原来真正想拔动的只是自已心底深处的一根弦
老虎不发威,你当我是hello kitty啊!小驴不发威,你以为我是史努比啊!
怀才就像怀孕,时间长了才能看出来
来瓶82年的矿泉水
过错是暂时的遗憾,而错过则是永远的遗憾!
小时候我以为自己长大后可以拯救整个世界,等长大后才发现整个世界都拯救不了我…….

史上最消魂的本田车模

03月 9th, 2008











IPhone美图

03月 7th, 2008


























Mysql磁盘限额脚本 后期准备加入到主机系统内

03月 5th, 2008

mysql用户限额的实现

原理:
由于每个用户的数据库都是以目录的形式存在于 ar /mysql或者其他目录下。
一个目录就是一个数据库。所以可以通过检测目录的大小得到数据库大小,判断
容量是否超过限额,如果超过限额就取消该用户的insert,create,update,create temp table
权限,允许select,delete等其他权限。

实现的脚本如下:
su-2.05b# cat quotamysql.sh
#!/bin/sh
#hmy-2004-8-19 v-0.1
mysqldir=/usr /mysql
infofiledir=/root/hmywork
limitfile=limitmysql
userfile=user_mysql
#定义初始变量
while [ 1 ];
do
sleep 10
#每隔10秒检查一次

for i in `cat ${infofiledir}/${userfile}`
do
now=`du ${mysqldir}/$i |tail -n 1 |awk ‘{print $1}’`
#取得当前目录大小
limit=`grep $i  ${infofiledir}/${limitfile}|awk ‘{print $2}’`
#取得限额大小
if [ "$now" -gt "$limit" ];
#如果大于限额就执行下面的mysql语句
then
mysql –user=MySql@AdminU_ser –password=***********<<EOF
use mysql
update db set insert_priv=’N’ ,update_priv=’N', create_priv=’N',Create_tmp_table_priv=’N'  where db=’$i’;
flush privileges ;
EOF
echo $i database full! `date`>;>;fulluser
sed /`echo $i`/d $userfile >;tempfile
fi
done
cp tempfile $userfile

据说“全球只有4人通关”的游戏,你是否想挑战一下?

02月 28th, 2008




合金弹头 超好玩的射击游戏

02月 28th, 2008




Apache2.2.6带宽连接数控制(limitipconn_module+bw_module)

02月 20th, 2008

下载模块

http://ivn.cl/files/source/mod_bw-0.8.tgz

使用apxs来添加模块

/usr/local/httpd/bin/apxs -i -a -c mod_bw.c

重启Apache服务器

/usr/local/httpd/bin/apachectl restart

确认模块被正确加载

/usr/local/httpd/bin/httpd -M

原创iPhone暴力拆解

02月 17th, 2008

      由于最近iPhone的音量调节和静音按钮失灵了,怀疑是排线松了所导致,搜集了一下关于iPhone的拆解经验.想要无损拆解iPhone,一个字….难,黑色后盖比较好拆,用SIM卡或网上的胶布法,可轻松拆除,由于没经验,拆下3颗螺丝后直接用螺丝批锹IPHONE的边缘,造成了一些细微的变形,因为后盖是铝材料,较软.后来由于长时间没能拆开.搜索了一下国外的拆解视频,发现只要用螺丝批直接锹螺丝位下的金属块,用力不怕,因为附近都没有电路.开盖后重新安装了一下排线,问题解决了,而静音键可能是由于物理损坏,使用起来已经没有段落感,而上面结果比较复杂,螺丝缴多,个人认为完全没用,所以也没去管了,开机后出现闪频和白条,还以为是拆机所导致,原来是ANTS的屏幕程序冲突 关机前最好关闭,不然开机就会闪屏和出现长长的蜈蚣了








C99中的restrict关键字

02月 6th, 2008

这里的restrict让我觉得有些疑惑,一查原来是C99中增加的关键字

那么restrict的意义是什么呢?

One of the new features in the recently approved C standard C99, is the restrict pointer qualifier. This qualifier can be applied to a data pointer to indicate that, during the scope of that pointer declaration, all data accessed through it will be accessed only through that pointer but not through any other pointer. The ‘restrict’ keyword thus enables the compiler to perform certain optimizations based on the premise that a given object cannot be changed through another pointer. Now you’re probably asking yourself, “doesn’t const already guarantee that?” No, it doesn’t. The qualifier const ensures that a variable cannot be changed through a particular pointer. However, it’s still possible to change the variable through a different pointer.

概括的说,关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。

举个简单的例子

int foo (int* x, int* y)
{
*= 0;
*= 1;
return *x;
}

很显然函数foo()的返回值是0,除非参数x和y的值相同。可以想象,99%的情况下该函数都会返回0而不是1。然而编译起必须保证生成100%正确的代码,因此,编译器不能将原有代码替换成下面的更优版本

int f (int* x, int* y)
{
*= 0;
*= 1;
return 0;
}
 

啊哈,现在我们有了restrict这个关键字,就可以利用它来帮助编译器安全的进行代码优化了

int f (int *restrict x, int *restrict y) { *= 0; *= 1; return *x; }

此时,由于指针 x 是修改 *x的唯一途径,编译起可以确认 “*y=1; ”这行代码不会修改 *x的内容,因此可以安全的优化为

int f (int *restrict x, int *restrict y)
{
*= 0;
*= 1;
return 0;
}

最后注意一点,restrict是C99中定义的关键字,C++目前并未引入;在GCC可通过使用参数” -std=c99″
来开启对C99的支持