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