ubuntu自动编译脚本,写自动编译,拷贝文件的脚本比较容易,重点在与如何每天定时定点的自动执行这个脚本,来完成脚本中的自动编译程序。
我简单的自动编译脚本部分内容如下:
SOURCE=/home/zone5/autocompile/dev_Q3_cardv_mc
SAVE_FILE_EVERYDAY=/home/zone5/AutoCompileImg/EveryDay/
SAVE_FILE_EVETYWEEK=/home/zone5/AutoCompileImg/EveryWEEK/
OUTPUT_IMAGE=./output/IMAGES/
FILE_NAME=$(date +%Y%m%d)
cd $SOURCE
repo sync -c &&
PROJECT=botai
source sportdv/devices/apollo/$PROJECT/BoardConfig.sh &&
./buildCarDV &&
mkdir -p $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/ramdisk0.img $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/ramdisk.img $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/system.img $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/uboot_lite.isi $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/uImage $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf sportdv/devices/apollo/$PROJECT/items.itm $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT
echo "------------ Project $PROJECT END ------------"
PROJECT=MSD_GP000
source sportdv/devices/apollo/$PROJECT/BoardConfig.sh &&
./buildCarDV &&
mkdir -p $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/ramdisk0.img $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/ramdisk.img $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/system.img $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/uboot_lite.isi $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf $OUTPUT_IMAGE/uImage $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT &&
cp -rf sportdv/devices/apollo/$PROJECT/items.itm $SAVE_FILE_EVERYDAY/$FILE_NAME/$PROJECT
echo "------------ Project $PROJECT END ------------"
重点,在服务器上每天自动执行这个脚本来完成任务。
方法一:使用crontab (ubuntu中自带的自动执行的工具)
crontab -e 来添加新的需要执行的命令
crontab -l 可以用来查看你这个用户名添加的自动执行命令
crontab -r 可以用来删除你这个用户名添加的自动执行命令
30 21 * * * keven /home/zone5/autocompile.sh >> /home/zone5/tmp/$(date +%Y%m%d).log
每天21:30分,以keven这个用户的权限执行/home/zone5/autocompile.sh这个脚本,并且把log保存在tmp文件夹中,文件名保存为年与日(eg:20160512.log)的形式,方便记录。
方法二:crontab的另一种用法
vim /etc/crontab
查看这个文件,你可以发现服务器自己会有很多每天都会执行的文件,需要每天执行,只需要把你需要运行的脚本拷贝到 /etc/cron.daily/这个文件夹中,系统就会自己每天执行这个文件夹中的所有脚本。
我是比较悲催的,这两种方法都用不了,所以不得不使用最笨的方法了,反正服务器每天都有在运行,所以自己写了一个计时的脚本来执行自己的自动编译脚本。
方法三:自己写的计时脚本来执行自己的自动编译脚本
其实计时脚本只需要不停的检测时间是否与你想要编译的时间点相等即可,计时脚本内容如下:
我这里设置的是当时间为 030000(凌晨三点)时,就会执行下面的脚本,别切保存编译的log
while [ 1 ]
do
sleep 1s
if [ "$(date +%H%M%S)" = "030000" ]
then
/home/zone5/autocompile/autocompile.sh >> /home/zone5/AutoCompileImg/tmp/$(date +%Y%m%d).log
fi
done
好吧,虽然不够专业,但是,就当做是给自己记录的笔记吧!