定时编译提交工具(shell脚本)以及linux cron的使用

1.前两天写了一个编译并上传镜像文件的shell脚本,在这里记录一下。

#!/bin/sh 
 
ANDROID_HOME=$HOME/android 
UBOOT=$HOME/android/bootable/bootloader/uboot-imx 
ENV=$HOME/android/build 
OUT=$HOME/android/out/target/product/sabresd_6dq/ 
CURRENT_DATE=$(date +%Y-%m-%d) 
ANDROID_RELEASE=$HOME/python_test/ 
RELEASE_PATH="" 
TARGET_FILE=$HOME/android/out/target/product/sabresd_6dq/obj/PACKAGING/target_files_intermediates/ 
OTA="" 
 
compile() 
{ 
    echo "==================clean all======================" 
    make clean 
    echo "==================compile u-boot=================" 
    make -C $UBOOT distclean  
    make -C $UBOOT mx6q_sabresd_android_config 
    make -C $UBOOT -j32 
    echo "=================compile system==================" 
    make -j32 
} 
 
mkdir_release_path() 
{ 
    release_path_base=${ANDROID_RELEASE}${CURRENT_DATE} 
    if [ ! -d $release_path_base ];then mkdir $release_path_base;fi 
    mkdir ${release_path_base}"/"${i} 
 
    if [ $i == "user" ];then  
        mkdir ${release_path_base}"/"${i}"/ota" 
        OTA=${release_path_base}"/"${i}"/ota" 
    fi  
    RELEASE_PATH=${release_path_base}"/"${i} 
} 
 
copy_img_and_release_note() 
{ 
    file_list=("boot.img" "system.img" "recovery.img" "u-boot-6q.bin") 
    for file in ${file_list[@]};do 
        if [ -f ${OUT}"/"${file} ];then cp ${OUT}"/"${file} $RELEASE_PATH 
        else 
            echo "$file not exit,compile faild!!!, please check $(pwd)/ReleaseNote.txt" 
            echo ${OUT}${file} 
        fi 
    done 
     
    if [ $i == "user" ];then  
        cp ${OUT}"/"sabresd_6dq-ota-* ${OTA} 
        cp ${TARGET_FILE}sabresd_6dq-target_files-* ${OTA} 
    fi 
     
    cp ReleaseNote.txt ${ANDROID_RELEASE}${CURRENT_DATE} 
} 
 
copy() 
{ 
    mkdir_release_path 
    copy_img_and_release_note 
} 
 
commit() 
{ 
    current_time=$(date +%H:%M:%S) 
    git add . 
    git commit -m "$current_time" 
    git push 
} 
 
compile_and_copy() 
{ 
    source $ENV/envsetup.sh 
    for i in $@;do 
        if [ $i == "user" ];then 
        lunch sabresd_6dq-$1 
        compile 
        make otapackage 
            copy $i 
        elif [ $i == "eng" ];then
        lunch sabresd_6dq-$1
        compile
            copy $i
        else
            echo "====================unknown parameter====================="
        fi
    done
}

make_release_note()
{
    repo forall -c git log --after="1 week ago" > ReleaseNote.txt
    if [ ! -s "ReleaseNote.txt" ];then echo "最近一周没有提交" > ReleaseNote.txt;fi
}

main()
{
#因为cron没有配置额外的环境变量,所以编译所需的环境变量需要在脚本中写好。
    CROSS_COMPILE=$HOME/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
    PATH=$HOME/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/:$PATH
    PATH=$HOME/android/bootable/bootloader/uboot-imx/tools:$PATH
    PATH=$HOME/java/jdk1.6.0_45/bin:$PATH
    PATH=$HOME/java/jdk1.6.0_45/jre/bin:$PATH
    PATH=$HOME/bin:$PATH

    cd $ANDROID_HOME 
    repo sync -j4
    make_release_note
    compile_and_copy user eng
    rm ReleaseNote.txt
    cd $ANDROID_RELEASE
    commit
}
main

2.cron定时器的使用

要编辑你的 crontab 文件,需要在 Linux 或 Unix 的 shell 提示符后键入以下命令:$ crontab -e

语法为:1 2 3 4 5 /path/to/command arg1 arg2 或者 1 2 3 4 5 /root/ntp_sync.sh

第1个字段:分钟 (0-59)

第2个字段:小时 (0-23)

第3个字段:日期 (1-31)

第4个字段:月份 (1-12 [12 代表 December])

第5个字段:一周当中的某天 (0-7 [7 或 0 代表星期天])

/path/to/command - 计划执行的脚本或命令的名称

操作符:

星号 (*) : 此操作符为字段指定所有可用的值。举个例子,在小时字段中,一个星号等同于每个小时;在月份字段中,一个星号则等同于每月。

逗号 (,) : 这个操作符指定了一个包含多个值的列表,例如:1,5,10,15,20,25.

横杠 (-) : 此操作符指定了一个值的范围,例如:5-15 ,等同于使用逗号操作符键入的 5,6,7,8,9,...,13,14,15

分隔符 (/) : 此操作符指定了一个步进值,例如: 0-23/ 可以用于小时字段来指定某个命令每小时被执行一次。步进值也可以跟在星号操作符后边,如果你希望命令行每 2 小时执行一次,则可以使用 */2

举例:

### 每隔 5 分钟运行一次 backupscript 脚本 ##

*/5 * * * * /root/backupscript.sh

### 每天的凌晨 1 点运行 backupscript 脚本 ##

0 1 * * * /root/backupscript.sh

### 每月的第一个凌晨 3:15 运行 backupscript 脚本 ##

15 3 1 * * /root/backupscript.sh



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值