一、简介
linux下shell在工作中的部分总结,仅供参考使用。
二、详解
(1)svn文件修改错乱,重新更新
#!/usr/bin/sh
CURRENT_DIR=`pwd`
echo "开始从SVN上面重新导入当前目录下所有源码"
TMP_DIR=`ls -R | grep './'`
for MK_DIR in $TMP_DIR
do
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_DIR
done
svn up
echo "完成"
(2)svn提交修改代码
svn st | grep '^[AMD]' | cut -c 9- | xargs svn ci -m "commit"
(3)svn递归清除.SVN文件
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/sh
CURRENT_DIR=`pwd`
echo "开始编译当前目录下所有源码"
TMP_DIR=`find ./ -name makefile`
for MK_DIR in $TMP_DIR
do
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_DIR
done
echo "完成"
(5)shell时间测试
#!/bin/bash
source ~/.profile
START_TIME=`date '+%Y%m%d%H%M%S'`
START_TIME1=`date '+%Y-%m-%d-%H-%M-%S'`
echo $START_TIME1
hadoop fs -put /public/interf/ao_test_hp/ao/logdata.txt /sid/log/log.txt
END_TIME=`date '+%Y%m%d%H%M%S'`
END_TIME1=`date '+%Y-%m-%d-%H-%M-%S'`
echo $END_TIME1
RESULT=`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
#done
exit 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
done
exit 1
(7)shell检测程序运行(结合定时任务)
##################################################################################
CUR_HOUR=`date '+%y年%m月%d日%H时%M分%S秒'`
cd ~/framework/bin
ps -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`
do
chmod 777 -R $file
done
(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)若有建议,请留言,在此先感谢!