shell工作应用总结

来源:互联网 发布:儿童自行车 知乎 编辑:程序博客网 时间:2024/05/29 09:17

一、简介

      linux下shell在工作中的部分总结,仅供参考使用。

二、详解

(1)svn文件修改错乱,重新更新

#!/usr/bin/shCURRENT_DIR=`pwd`echo "开始从SVN上面重新导入当前目录下所有源码"TMP_DIR=`ls -R | grep './'`for MK_DIR in $TMP_DIRdo  DIR_LEN=`expr length "$MK_DIR"`  let DIR_LEN=DIR_LEN-1  cd `echo $MK_DIR |cut -c 1-"$DIR_LEN"`  rm *.cpp *.h makefile *.mk  cd $CURRENT_DIRdonesvn upecho "完成"

(2)svn提交修改代码

svn st | grep '^[AMD]' | cut -c 9- | xargs svn ci -m "commit"

(3)svn递归清除.SVN文件

linux下:
find . -name ".svn" -exec rm -rf {} \;
或者:
find . -type d -name ".svn"|xargs rm -rf
window下新建svn.cmd文件:
for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"ping 192.168.0.1>nul

(4)执行所有makefile

#!/usr/bin/shCURRENT_DIR=`pwd`echo "开始编译当前目录下所有源码"TMP_DIR=`find ./ -name makefile`for MK_DIR in $TMP_DIRdo  DIR_LEN=`expr length "$MK_DIR"`  let DIR_LEN=DIR_LEN-8  cd `echo $MK_DIR |cut -c 1-"$DIR_LEN"`  pwd  make clean  make all  cd $CURRENT_DIRdoneecho "完成"

(5)shell时间测试

#!/bin/bashsource ~/.profileSTART_TIME=`date '+%Y%m%d%H%M%S'`START_TIME1=`date '+%Y-%m-%d-%H-%M-%S'`echo $START_TIME1hadoop fs -put /public/interf/ao_test_hp/ao/logdata.txt /sid/log/log.txtEND_TIME=`date '+%Y%m%d%H%M%S'`END_TIME1=`date '+%Y-%m-%d-%H-%M-%S'`echo $END_TIME1RESULT=`expr $END_TIME - $START_TIME`echo "时间(s):"$RESULT

(6)shell执行C程序

#!/bin/bash#while true#do##############################################自己配置的变量file_dir="/public/interf/framework/bin"   #文件所在目录exe_DIR="/public/interf/framework/c_sid/develop/plugin/log_proxy_plugin/framework_test/import_data"   #程序所在目录#############################################cd $file_dir CUR_TIME=`date '+%Y%m%d%H'`PRE_TIME=`expr $CUR_TIME - 1`FILEPATH=`find . -type d -name "$PRE_TIME" -prune`if [ -z $FILEPATH ]  then    echo "[`date '+%Y-%m-%d %H:%M:%S'`]the log file is not one hour before!"else    e_LEN=`expr length "$FILEPATH"`    f_LEN=`expr $e_LEN - 9`    DIR=`echo $FILEPATH | cut -c "$f_LEN"-"$e_LEN"`    cd $exe_DIR    ./import $file_dir $DIR    echo "[`date '+%Y-%m-%d %H:%M:%S'`][$DIR] import successed!"fi #sleep 3600#doneexit 1
#!/bin/bash##############################################自己配置的变量file_dir="/public/interf/framework/bin"   #文件所在目录exe_DIR="/public/interf/framework/c_sid/develop/plugin/log_proxy_plugin/framework_test/import_data"   #程序所在目录end_time=2011090000;    #终止时间#############################################cd $file_dir CUR_TIME=`date '+%Y%m%d%H'`for((PRE_TIME = $CUR_TIME; PRE_TIME >= $end_time; PRE_TIME--))  do    FILEPATH=`find . -type d -name "$PRE_TIME"`    if [ $FILEPATH ]      then        e_LEN=`expr length "$FILEPATH"`        f_LEN=`expr $e_LEN - 9`        DIR=`echo $FILEPATH | cut -c "$f_LEN"-"$e_LEN"`        cd $exe_DIR        ./import $file_dir $DIR        echo "[`date '+%Y-%m-%d %H:%M:%S'`][$DIR] import successed!"    fi  doneexit 1

(7)shell检测程序运行(结合定时任务)

##################################################################################CUR_HOUR=`date '+%y年%m月%d日%H时%M分%S秒'`cd ~/framework/binps -ef | grep framework|awk '{print $1$2$3$4$5$6$7$8$9$10}'| grep sid_test01|awk '{                cmd_list[NR] =  $1 ;        }        END {         if (NR==0 ) {print "测试程序sid_test01已经死掉,重启"                system("nohup framework -p sid_test01> /dev/null &");                system("printf \"%s 重启进程完成\n\" `date '+%y年%m月%d日%H时%M分%S秒'`");        }  }' ps -ef | grep framework|awk '{print $1$2$3$4$5$6$7$8$9$10}'| grep sid_test02|awk '{                cmd_list[NR] =  $1 ;        }        END {         if (NR==0 ) {print "测试程序sid_test02已经死掉,重启"                system("nohup framework -p sid_test02> /dev/null &");                system("printf \"%s 重启进程完成\n\" `date '+%y年%m月%d日%H时%M分%S秒'`");        }  }'    ps -ef | grep framework|awk '{print $1$2$3$4$5$6$7$8$9$10}'| grep sid_test03|awk '{                cmd_list[NR] =  $1 ;        }        END {         if (NR==0 ) {print "测试程序sid_test03已经死掉,重启"                system("nohup framework -p sid_test03> /dev/null &");                           system("printf \"%s 重启进程完成\n\" `date '+%y年%m月%d日%H时%M分%S秒'`");        }  }'    exit 1 

(8)shell更改所有子目录权限

for file in `find . -print`dochmod 777 -R $filedone

(9)shell压缩和解压缩

一、压缩
tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
二、解压
tar -xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2   //解压 tar.bz2
tar -xZvf file.tar.Z   //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
三、总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar -xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压

三、总结

(1)shell相关的内容可参考其他文档。
(2)若有建议,请留言,在此先感谢!

0 0
原创粉丝点击