Supervisor
一个client/server系统,用来控制一系列进程在UNIX-like操作系统上
supervisord(server):响应client端的命令,控制进程启动,停止,监控进程,重新启动崩溃或退出的进程,记录进程日志,生成并处理进程生命周期中的点事件。supervisord使用一个配置文件,通常是/etc/supervisord.conf
里面是一些配置信息。
supervisorctl(client):类似于命令行,向server端发送用户需要的控制命令
server与client通信通过socket通信。
Apollo中supervisor组件的应用
supervisor组件的安装,在docker/build/installers/install_supervisor.sh
# Fail on first error.
set -e
apt-get install -y supervisor
# Add supervisord config file
echo_supervisord_conf > /etc/supervisord.conf
server端
通过查看进程可以看到supervisord已经启动,并且配置文件是/apollo/modules/tools/supervisord/dev.conf
ubuntu@in_dev_docker:/apollo$ ps aux | grep supervisor
root 193 0.2 0.0 49900 14312 ? Ss 10:29 0:02 /usr/bin/python /usr/local/bin/supervisord -c /apollo/modules/tools/supervisord/dev.conf
启动 : 在scripts/bootstrap.sh
中
# Setup supervisord.
if [ "$HOSTNAME" == "in_release_docker" ]; then
supervisord -c /apollo/modules/tools/supervisord/release.conf >& /tmp/supervisord.start.log
echo "Started supervisord with release conf"