ubuntu下自动执行编译的脚本

秋水 2013-04-13 12:22:48
大家好,工作关系,求助一个自动编译的脚本,没有接触过这块的东西
大概步骤是先从SVN取下来源码,修改权限,进入到编译目录,执行source,执行make,然后报告编译结果,请教一下这个应该怎么写脚本,谢谢大家
...全文
351 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋水 2013-04-15
  • 打赏
  • 举报
回复
引用 16 楼 fly_qj 的回复:
现在我想可能与脚本放在crontab里有关系: 1、直接手动执行这个脚本,看看是否出错。 2、如果不出错,在crontab里面,给脚本后面加一个&,让它在后台执行试试吧,毕竟整个过程比较长。
应该是手动执行脚本,基本上达到了目的,没有出错,也记录了过程。 可是放到crontab中,我把SVN也给注释了,make只执行了一下便结束了……
秋水 2013-04-15
  • 打赏
  • 举报
回复
引用 16 楼 fly_qj 的回复:
现在我想可能与脚本放在crontab里有关系: 1、直接手动执行这个脚本,看看是否出错。 2、如果不出错,在crontab里面,给脚本后面加一个&,让它在后台执行试试吧,毕竟整个过程比较长。
手动执行这个脚本,没有问题,从svn到最后编译,只是我原本是想把所有的make的打印信息都记录到日志中,可是结果发现只记录了很少的一段,开始部分,最后部分。
RedWolf1999 2013-04-15
  • 打赏
  • 举报
回复
现在我想可能与脚本放在crontab里有关系: 1、直接手动执行这个脚本,看看是否出错。 2、如果不出错,在crontab里面,给脚本后面加一个&,让它在后台执行试试吧,毕竟整个过程比较长。
秋水 2013-04-15
  • 打赏
  • 举报
回复
引用 14 楼 fly_qj 的回复:
需要看看具体返回的错误码是多少再查可能的原因,这个既然出错,至少说明不是0
我直接贴出来您帮我看下吧 #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH #auto build OS #author minghua #version 1.0 #time 2012/04/14 ctime=`date +%Y%m%d_%H%M%S` cday=`date +%Y%m%d` logfile=/home/public/autobuild/$cday.log error_exit(){ echo "==========ERROR: $*==========" >> $logfile exit 1 } echo "==========BEGIN TO AUTO BUILD==========" > $logfile echo "$ctime,now start to build!" >> $logfile cd /home/smart echo "==========REMOVE THE OLD SOURCE FILE==========" >> $logfile rm -rf /home/smart/OS || error_exit "remove the old source file failed!" echo "==========BEGIN TO CHECKOUT SVN PROJECT AT ${PWD}==========" >> $logfile svn co http://10.3.15.185/OS --username minghua --password minghua cd /home/smart/OS echo "==========FINISHED CHECK OUT PROJECT CODE==========" >> $logfile echo "==========CODE INFO==========" >> $logfile svn info >> $logfile chmod 777 /home/smart/OS -R echo "==========START TO BUILD PROJECT==========" >> $logfile cd /home/smart/OS/android/jb_4.2/ echo "==========ENTER BUILD DIRECTORY ${PWD}==========" >> $logfile source init.sh >> $logfile make -j12 >> $logfile echo "==========BUILD FINISHED AT:$(date +%Y%m%d_%H%M)==========" >> $logfile exit 1 #EOF 我把错误判断取消,然后SVN正常,可是编译的时候又莫名其妙的结束了……
秋水 2013-04-15
  • 打赏
  • 举报
回复
引用 20 楼 fly_qj 的回复:
看来跟crontab脱不了关系。 可以把你的脚本再改改,让它后台运行,自己判断,每一秒获取一下时间,如果时间到了,就执行任务即可。这样就不需要Crontab了。
没办法了,只能这样了,嗯,谢谢您了
RedWolf1999 2013-04-15
  • 打赏
  • 举报
回复
看来跟crontab脱不了关系。 可以把你的脚本再改改,让它后台运行,自己判断,每一秒获取一下时间,如果时间到了,就执行任务即可。这样就不需要Crontab了。
Linux-Torvalds 2013-04-15
  • 打赏
  • 举报
回复
引用 18 楼 ht314495132 的回复:
引用 16 楼 fly_qj 的回复:现在我想可能与脚本放在crontab里有关系: 1、直接手动执行这个脚本,看看是否出错。 2、如果不出错,在crontab里面,给脚本后面加一个&,让它在后台执行试试吧,毕竟整个过程比较长。 应该是手动执行脚本,基本上达到了目的,没有出错,也记录了过程。 可是放到crontab中,我把SVN也给注释了,make……
那可能是make执行过程当中,发生了错误。 可以贴一下你的AOSP的编译信息吗?
RedWolf1999 2013-04-14
  • 打赏
  • 举报
回复
需要看看具体返回的错误码是多少再查可能的原因,这个既然出错,至少说明不是0
秋水 2013-04-14
  • 打赏
  • 举报
回复
引用 11 楼 fly_qj 的回复:
返回的错误值是什么?
svn co http:/…… --username * --password * || error_exit "svn co error!" ./执行没问题,crontab执行到这句就会停止,返回svn co error
秋水 2013-04-14
  • 打赏
  • 举报
回复
引用 11 楼 fly_qj 的回复:
返回的错误值是什么?
svn co是没有问题的,可是却返回“co error”
RedWolf1999 2013-04-14
  • 打赏
  • 举报
回复
返回的错误值是什么?
秋水 2013-04-14
  • 打赏
  • 举报
回复
嗯,谢谢以上各位,
引用 9 楼 fly_qj 的回复:
可以这样自定义一样出错处理函数: error_exit(){ echo "error: $*" exit 1 } 对于那些你认识重要的操作都加判断即可。如: svn co http://your_respository || error_exit "svn co" chmod u+x your_file || error_exit "chmo……
这种自定义的函数写在SHELL脚本中,使用./执行没问题,可是放到crontab中执行的时候,虽然执行没有错误,但是却反悔了一个错误值,这是为什么呢?
Linux-Torvalds 2013-04-13
  • 打赏
  • 举报
回复
不就是 svn co http://your_respository chmod u+x your_file cd working_directory source your_file make 这个步骤么? 然后中间加入一些错误判断,返回比较的结果。 如果是要自动执行,放在crontab当中就好了。
RedWolf1999 2013-04-13
  • 打赏
  • 举报
回复
就用shell写就行了啊,之前我们公司的都是我写的。
RedWolf1999 2013-04-13
  • 打赏
  • 举报
回复
可以这样自定义一样出错处理函数: error_exit(){ echo "error: $*" exit 1 } 对于那些你认识重要的操作都加判断即可。如: svn co http://your_respository || error_exit "svn co" chmod u+x your_file || error_exit "chmod .." ...
引用 5 楼 ht314495132 的回复:
引用 3 楼 prohibit 的回复:就把你的操作步骤记录一下就OK了C/C++ code?1234567#!/bin/bashsvn co your_pathchmod ...cd your_dirsource your_filemakeecho $? 嗯,就是这个步骤,关键是要加入一些信息的收集,不如出错信息,完成信息,编译花费时间,并且需要记录到文件中,这个部分……
prohibit 2013-04-13
  • 打赏
  • 举报
回复
在执行一个命令后判断其返回结果($?:上一条命令的退出状态,0表示成功),就知道是否正确执行了,然后自己处理一下,比如:
if [ $? -ne 0 ]
then
    #do something or exit, or give warning first, then exit
fi
秋水 2013-04-13
  • 打赏
  • 举报
回复
引用 2 楼 linwhwylb 的回复:
不就是 svn co http://your_respository chmod u+x your_file cd working_directory source your_file make 这个步骤么? 然后中间加入一些错误判断,返回比较的结果。 如果是要自动执行,放在crontab当中就好了。
嗯,现在卡壳的地方就在编译过程中信息的收集以及编译结果的反馈
秋水 2013-04-13
  • 打赏
  • 举报
回复
引用 1 楼 fly_qj 的回复:
就用shell写就行了啊,之前我们公司的都是我写的。
那几个步骤的简单的额我会,主要是要加入这种信息收集的东西,这部分能给个例子吗
秋水 2013-04-13
  • 打赏
  • 举报
回复
引用 3 楼 prohibit 的回复:
就把你的操作步骤记录一下就OK了C/C++ code?1234567#!/bin/bashsvn co your_pathchmod ...cd your_dirsource your_filemakeecho $?
嗯,就是这个步骤,关键是要加入一些信息的收集,不如出错信息,完成信息,编译花费时间,并且需要记录到文件中,这个部分不怎么会写
nemopang 2013-04-13
  • 打赏
  • 举报
回复
ubuntu 环境记得在脚本头用 #!/bin/sh 这点与rh不同
加载更多回复(1)

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧