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