其它常见问题
服务正常启动,应用部署完成后,服务又异常退出
问题现象
部署应用中部署了启动服务的命令或脚本后,服务正常启动;部署应用完成后,服务又异常退出。
原因分析
该问题一般原因为未使用异步方式启动服务,部署应用完成后,启动服务的会话链接断开,即父进程结束,导致子进程也同步结束。
处理方法
使用异步方式启动服务,参考命令:
nohup ${command} > ${log_file} 2>&1 &
其中,${command} 代表服务启动命令,${log_file} 代表服务启动日志,如果不希望输出日志文件,可以使用“/dev/null” 代替。
应用已经部署完成,但是服务停止失败
问题现象
部署停止服务的命令或脚本时,系统提示部署已完成,但服务停止失败。
原因分析
该问题一般原因为使用了异步方式停止服务,停止服务命令部署可能报错或者未部署完成。
处理方法
通常情况,结束服务不需要使用异步方式部署,需要使用同步方式部署结束命令。同步方式部署过程中如果命令报错,应用会提示错误信息。
应用一直在部署中,导致应用部署超时
问题现象
部署“执行shell命令”步骤后,应用一直在部署中,导致应用部署超时。
原因分析
- 应用中的命令本身部署效率比较低,部署耗时比较长。
- 脚本中包含了交互式的命令,命令部署过程中需要前台输入相关信息才会进一步部署。
处理方法
- 在对应目标主机手工执行对应应用中的命令,查看脚本部署时长是否超过部署应用超时时间(30分钟)。
- 查看命令中是否包含交互式命令,比如 read ,sudo,su,yum 等;如果无相关命令,可以在目标主机手工执行脚本检查。
目标主机上存在的命令,但是部署应用提示命令不存在
问题现象
目标主机上存在的命令,但是部署应用提示命令不存在。
原因分析
该命令对应安装目录未添加到 /etc/profile 环境变量文件中。
处理方法
- 登录目标主机,执行命令,查看命令的安装目录。
type ${command}
- 修改应用,使用绝对路径调用对应命令或者把命令安装目录添加到目标主机/etc/profile环境变量中。
shell脚本部署完成后未达到脚本预期
问题现象
部署应用中的shell脚本部署完成后未达到脚本预期。
原因分析
应用部署成功,但应用中的脚本执行失败。
处理方法
部署应用中shell脚本,会输出脚本执行过程中的结果,可以参考shell脚本提供的两个执行选项,方便定位问题。
- set –e 选项,脚本执行过程中遇到第一个报错命令,整个脚本退出执行,返回错误信息。
- set –x 选项,脚本执行过程中输出debug信息,即每一条命令执行的详细信息,方便问题定位。