首先,需要明确shell命令执行结果$?为0或者非0仅能代表此执行语句是否顺利执行了,例如: 执行语句:adb connect 192.168.XX.XX 执行结果:unable to connect to 192.168.XX.XX:5555: Connection timed out 此时echo $? 为0 所以需要手动在关键语句处对执行结果做逻辑判断 var=$(adb connect 192.168.XX.XX) if [[ $var =~ "connected" ]]; t…
在jenkins的build中,如果用shell脚本的话,要记住有两个地方要注意 1.由于默认jenkins是使用/bin/bash -xe xxx.sh来调用脚本的,所以不同于日常写的脚本,任何一行返回值不为0都会使得脚本中途退出,从而build失败. 解决方法1:在开头加#!/bin/bash(试过可以) 解决方法2:在开头加set +e(没试过,应该是可以的) 2.由于jenkins默认在build结束后杀死所有build相关进程,所以nohup的进程也会被杀死,如果想正常使用nohup,…
Jenkins部署java项目遇到的问题: 1.Jenkins执行构建后,需要手动执行startup.sh,站点才能正常访问 产生原因: shell脚本发布时,会衍生进程,Jenkins默认会自动杀掉衍生进程 解决方案: 在执行shell脚本前,加个build_ID参数即可 BUILD_ID=DONTKILLME…
本文简要描述了在ubuntu系统下无法使用source命令的原因,及对应的两种解决方法,并在附录中引用一篇文章来详细解释source命令的用法 问题: 由于在交叉编译时,需要在当前shell内执行source命令来临时指定系统的编译环境为嵌入式环境.故希望通过编写一个shell脚本来自动执行编译命令,然而在脚本中通过source命令指定编译环境时,系统会提示找不到命令 原因: source命令是bash shell的内置命令,而ubuntu 默认用的是dash(基本POSIX标准的命令解释器),…
在开发过程中,经常会使用shell脚本去完成定时备份的任务,普遍的做法是通过系统的定时任务定时执行备份脚本 设想这样一种场景,本次备份时间到了,自动执行备份脚本,如果备份比较耗时的话,会一直持续到下一次备份时间到了还未结束,下次备份又会自动调用备份脚本,相当于同一时间有两个进程在执行备份脚本,这可能会导致备份数据错乱或其他不可预知的问题 更进一步,假如执行备份脚本消耗的时间远大于设置的备份间隔的话,系统会出现多个同时在执行脚本的Bash实例,会占用大量的系统资源,进而影响正常业务程序的运行 那如…
原始发布部署: 石器时代的我们,先是本地打包好项目,在去服务器上把原来的文件删了,然后回到本地copy到服务器: 这操看起来简单,实际部署的人就知道多烦了,假如来几个项目都要重新发布:那就爽了: 今天小编分享个自动打包部署方法,Jenkins 上只要你的小鼠标轻轻一点就OK: 正文: 首先是服务器上安装 Jenkins :前提呢要现在服务器上安装Java 环境  因为他是依据Java 环境运行的: 这里如何安装就不多说了,请参考这位哥们的博文 https://blog.csdn.net/runn…
这篇文章主要介绍了shell脚本实现监控shell脚本的执行流程及变量的值本文使用shell完成对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程的观察功能,需要的朋友可以参考下 很多时候,我们都会写shell程序来完成一些不用重复造轮子的时刻,但是,又因为shell语句中也会有函数,也会有变量,在运行后到底执行了哪些相关的操作,就需要对具体执行过程中的变量等可变的因素的监控,那么我们下面就写个小小的shell例子,来完成这个对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程…
使用shell脚本定时执行备份mysql数据库 #!/bin/bash ############### common file ################ #本机备份文件存放目录 MYSQLBACK_DIR="/data/backup/bak_mysql" #格式化日期,备份文件时用日期来做文件名的 DATE=`date +%Y%m%d-%H%M%S` #保存日期 DAYS= ######## mysql info ############################ # D…
# 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed 的命令就不往下执行了.测试过 实例1. shell脚本批量开启防火墙端口 [mysql@www ~]$ cat firewall.sh #!/bin/bash func1(){ firewall-cmd --zone=public --add-port=/tcp --permanent [ $?…
现象: shell脚本中source aaa.sh时提示 source: not found 原因: ls -l `which sh` 提示/bin/sh -> dash 这说明是用dash来进行解析的. 改回方法: 命令行执行:sudo dpkg-reconfigure dash 在界面中选择no 再ls -l `which sh` 提示/bin/sh -> bash 修改成功,source可以用了~ 从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成…