对之前的svn更新脚本继续改进,内容包括当无法连接SVN服务器时的处理,以及增加定时任务。
svn更新脚本改进之后代码如下:
#!/bin/sh
revision=`svn info |grep "Last Changed Rev:" |awk '{print $4}'`
echo "the revision is $revision"
URL=`svn info |grep URL: |awk '{print $2}'`
echo "the url is $URL"
svnRevision=`svn info $URL |grep "Last Changed Rev:" |awk '{print $4}'`
echo "the revision in svn is $svnRevision"
if [[ $revision < $svnRevision ]] ; then
echo -e "\033[0;31;40m need svn up \033[0m"
svn up
echo "svn up finish"
exit 1
elif [[ "$svnRevision" = "" ]]; then
echo -e "\033[0;35;40m get svn revision info fail \033[0m"
exit -1
else
echo -e "\033[0;38;40m no need svn up \033[0m"
exit 0
fi
调用svn脚本进行更新的脚本,改进包括当无法连接上svn服务器时的处理,以及增加定时任务,和获取当前时间的值的写法的改进(之前通过sed和awk对date输出的结果进行整理,现在改用date +参数的方式获取)。
由于是在其他地方调用该脚本,所以该脚本运行后需要进入脚本所在的目录,获取脚本所在的目录共有下面几种方法:
echo $(cd "$(dirname "$0")"; pwd) #得到的是绝对路径
echo ${0%/*} #得到的是相对路径,不过如果是在脚本所在目录运行该脚本,貌似得到的是运行的程序
echo $(dirname `readlink -f "$0"`) #得到的是绝对路径
改进后的调用svn脚本进行更新的脚本,代码如下:
#!/bin/bash
cd "$(dirname "$0")"
ROOT=`pwd`
LOGDIR=$ROOT/logsvn
if [ ! -d "$LOGDIR" ]; then
mkdir $LOGDIR
fi
FILENAME=$LOGDIR/$(date +%m%d%H%M%S).log
function svnUp()
{
echo "check $1" |tee -a $FILENAME
cd $ROOT/$1
./svnUpCheck.sh >> $FILENAME
rtnvalue=$?
if [[ $rtnvalue = 1 ]]; then
echo -e "\033[0;31;40m svn up `pwd`\033[0m"
elif [[ $rtnvalue = 0 ]]; then
echo -e "\033[0;38;40m equal revision, skip `pwd`\033[0m"
elif [[ $rtnvalue = -1 ]]; then
echo -e "\033[0;35;40m can't get revision, skip `pwd`\033[0m"
elif [[ $rtnvalue = 255 ]]; then
echo -e "\033[0;35;40m unable to connect, error code: $rtnvalue \033[0m"
else
echo -e "\033[0;33;40m other error, error code: $rtnvalue \033[0m"
fi
revision=`svn info |grep "Last Changed Rev:" |awk '{print $4}'`
changedate=`svn info |grep "Last Changed Date:" |awk '{print $4 "\x20" $5}'`
echo "$revision $changedate" >> $FILENAME
date >> $FILENAME
echo >> $FILENAME
}
svnUp kernel/android/JB
svnUp kernel/linux
svnUp kernel/system
svnUp common_magellan
svnUp image_file_creator
svnUp system
svnUp SQA_DailyBuild/AV_FW
svnUp SQA_DailyBuild/bootcode
最后说下linux定时任务。
linux定时任务可以通过cron来实现。像我这里用的ubuntu默认是开启该服务的,启动或关闭该服务的命令如下:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
如果该服务默认不启动,而想要在开机的时候启动的话,可以在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
通过crontab -e 可以编辑crontab服务文件来添加定时任务,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件。
具体格式如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选。
我在这里,则是在最后加上以下代码:
0 9,12,15,18,21 * * * ~/branch/workspace/checkAllSVNUp.sh
0 0 * * * ~/konka/makeimage.sh
表示每个月每一周的每一天,在9至21点,每三小时执行一次~/branch/workspace/checkAllSVNUp.sh,在0时0分执行 ~/konka/makeimage.sh脚本。
参考文章:Linux下cron的使用:http://fanqiang.chinaunix.net/system/linux/2005-06-13/3306.shtml
linux定时任务的设置:http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html
分享到:
相关推荐
- 定时任务:将批处理脚本添加到操作系统(如Windows的任务计划程序或Linux的cron job)中,设置定时执行,实现自动备份。 - 备份策略:考虑备份频率,例如每日、每周或在每次提交后。同时,应考虑保留多少个旧...
例如,你可以设置定时任务,让svnpoller定期检查SVN仓库中的新提交,并在有更新时执行预定义的操作,如自动构建项目或者发送邮件通知。此外,它可能还支持过滤和筛选,只对特定路径或特定类型的更改做出响应,这样...
5. **自动化脚本**:通过自动化脚本功能,用户可以编写和执行一系列数据库操作,如备份、维护任务或数据迁移。12.1版可能增加了更多的预定义模板和自定义选项。 6. **数据库对象管理**:Toad提供了全面的数据库对象...
总结来说,该文档提供了从Jenkins安装到配置SVN再到公网访问的详细步骤和方法,并在过程中强调了自动化构建的重要性和对构建流程进行定制化的必要性。通过这些步骤,开发者可以建立起一个高效、自动的代码编译和测试...
8. **自动化脚本**:允许创建和运行自定义的脚本任务,实现定时任务或自动化工作流程。 9. **性能优化**:提供索引分析、SQL调优等功能,帮助提升数据库的运行效率。 在“plsql工具1223”中,我们可以理解为这是...
7. **自动化任务**:Toad允许设置定时任务,例如定期备份、数据同步和脚本执行,减轻DBA的工作负担。 8. **安全与权限管理**:用户可以方便地管理用户权限、角色和安全性设置,确保数据库的安全运行。 9. **故障...
6. **脚本支持**:支持批处理脚本执行,对于自动化任务特别有用,例如定时同步文件或运行服务器维护脚本。 7. **安全连接**:支持SSH(Secure Shell)协议,确保数据传输的安全性,这对于涉及敏感信息的开发项目...
- **版本历史**:记录了 FinalBuilder 自发布以来的所有版本更新信息,包括新特性、改进及修复的问题等。 - **许可**:详细介绍了 FinalBuilder 的许可类型、使用条款及限制条件等信息。 #### 四、开始使用 ...
9. **自动化任务**:用户可以设置自动化任务,例如定时运行SQL脚本、备份数据库或执行维护任务,减轻DBA的工作负担。 10. **安全性管理**:帮助管理用户权限、角色和安全性策略,确保数据库访问符合企业安全规定。 ...
因此,这个压缩包可能包含了一个基于Java的Web项目,使用Quartz Scheduler来处理定时任务,同时可能包含了项目的源码,让我们能够了解当时的开发实践和技术栈。在深入研究源码时,我们可以关注以下几个方面: 1. **...
6. 报告和自动化:Toad支持自定义报告和自动化任务,用户可以创建自己的报表模板,定时执行复杂的数据库任务,如备份、数据清理和性能检查。 7. Delphi集成:标签提到的“Delphi”可能是指Toad for Oracle可以与...
每个 Job 可以定义触发条件(如定时、代码推送等)、构建步骤(执行脚本、构建应用、运行测试等)和后处理操作(如发送邮件、部署应用等)。此外,Jenkins 支持流水线(Pipeline)语法,允许编写更复杂的自动化流程...
7. **自动化脚本**:支持自定义脚本,可以自动化执行常见的数据库任务,如定时备份、数据清理等。 8. **连接管理**:可以保存多个数据库连接配置,方便用户快速切换不同的数据库环境。 9. **性能分析**:通过执行...
4. 自动化任务:用户可以设置定时任务,自动执行如数据库备份、性能报告生成、SQL脚本执行等操作,减轻日常维护工作负担。 5. 报告生成:工具提供丰富的报告模板,可以自定义生成性能报告、SQL执行报告,便于团队...
9. **作业调度**:创建和管理数据库作业,实现定时执行任务。 10. **脚本执行历史**:记录用户的脚本执行历史,方便回溯和重用。 11. **性能分析**:通过执行计划和统计信息,帮助优化SQL查询性能。 12. **自定义...
2. **智能匹配**:在转换工程名称时,自动识别并同步更新相关的配置文件、引用、依赖项等,确保整个工程结构的完整性和一致性。 3. **版本管理兼容**:与常见的版本控制系统(如Git、SVN)兼容,确保在转换后仍能...
8.2.23是该软件的一个版本,它可能包含了一系列的更新和改进,旨在提升用户体验和工作效率。 1. **数据库设计与管理** - **可视化数据库设计**:dbForge Studio提供了一个直观的数据库模型设计工具,允许用户通过...
- **设置构建触发器**:可以选择手动触发构建,也可以设置定时任务自动触发构建,或者配置为每次代码提交时自动触发构建。 - **编写Ant构建脚本**:编写Ant构建脚本,用于执行编译、打包等操作。例如,可以使用`...
12. **自动化任务**:可以设置定时任务,例如定期运行脚本、检查数据库健康状况等。 13. **导入导出数据**:支持多种格式的数据导入导出,方便数据迁移和交换。 14. **学习资源**:Toad附带的帮助文档和在线社区...
10. **自动化脚本执行**:支持创建和执行脚本任务,定时运行,简化重复性工作。 PL/SQL Developer 8.04版本可能包含了一些改进和修复,例如增强的性能、更多的自定义选项或者对新版本Oracle数据库的支持。不过,...