saltstack 执行 cmd.run python 服务,会 hang 住。 但应用服务器上的服务是启动了。 使用 -l debug 参数启用 saltstack debug 日志,可以看到是因为 xx-xxxxx-service_start.sh 启动脚本没有返回执行结果给 saltstack,导致 saltstack 一直在等待返回结果。 查看 xx-xxxxx-service_start.sh 启动脚本,可以知道 python 服务是直接 nohup python manage.py runserver 0.0.0.0:25074 & 启动的,saltstack 无法正确处理这条命令。 原因是 nohup python manage.py runserver 0.0.0.0:25074 & 方式启动, 还会生成一个 nohup.out 文件 ,启动运行日志都会持续输出到此文件。导致的问题就是,命令还在运行中,没有退出,所以没有返回结果给 saltstack。 解决办法: 方式一: 修改脚本,nohup 配合 >/dev/null 2>&1 使用,就可以解决。 方式二: 利用 uwsgi 或者其他 python web server(gunicorn 等) 或者 systemctl 来后台运行 python 服务,由这些服务返回结果给 saltstack。