iGMAS Innovation Application Center
@School of Geodesy and Geomatics, Wuhan University
Menu
Home
Products
Visualization
Group
Software
Feedback
Sign In
Group
学术动态
团队风采
研究方向与代表成果
GNSS轨道钟差
实时精密定位
低轨增强GNSS
多源融合导航
GREATers
Tools and PPT
Group
学术动态
团队风采
研究方向与代表成果
GNSS轨道钟差
实时精密定位
低轨增强GNSS
多源融合导航
GREATers
Tools and PPT
GREATers
Return
服务器安装配置supervisor
Create on
2020-11-12T05:44:59Z
written by Wang Qingyun
转载自:[Supervisor使用详解](https://www.jianshu.com/p/0b9054b33db3) supervisor是使用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台程序,并监控进程状态,异常退出时能自动重启,为定时程序的运行提供了极大的方便。  下面介绍如何在服务器上安装和配置supervisor,以及supervisor的一些基本操作。 ## 安装 1. 安装supervisor需要首先安装python(最好是python3),不知道如何在服务器上安装python3的朋友可以去看之前的帖子。 2. 常用的几种安装命令: + `yum install supervisor` + `easy_install supervisor` ## 配置 1. **生成supervisor配置文件** `/etc/supervisord.conf` 2. **建立文件夹存放子进程配置文件** `mkdir /etc/supervisord.d` 子进程配置文件一般默认为ini格式,也可以自定义为.conf等其他格式 3. **修改配置文件supervisord.conf** 配置文件中主要提供了子进程配置文件的路径,主要修改子配置文件路径。 `vim /etc/supervisord.conf` 拉到底部,可以看到配置文件原本为: ``` [include] files = relative/directory/*.ini files = /home/iGMAS/software/supervisor/conf.d/gnss_upd.conf ``` 根据子进程配置文件,修改配置文件为: ``` [include] files = /etc/supervisord.d/*.conf ``` 4. **编辑子进程配置文件** ``` Example: [program:xxx] #xxx是进程的名称 command=‘ ’ #运行命令 restart=true #是否在程序异常退出后自动重启 redirect_stderr=true stdout_logfile=‘ ’ #日志文件存放路径 stdout_logfile_maxbytes=20MB stdout_logfile_backups=20 ``` ## supervisor首次启动 ==使用supervisor进程管理命令之前先启动supervisord `supervisord -c /etc/supervisord.conf` **常见错误** * **启动了多个supervisord服务,导致无法正常关闭服务** ``` Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord. ``` 一般是因为在使用`supervisord -c /etc/supervisord.conf`命令启动supervisord之前,直接运行了supervisord,导致存在进程被多个superviord管理,无法正常关闭进程。 **解决方法** 使用`ps -fe | grep supervisord`查看所有启动过的supervisord服务,然后`kill +9 pid`(pid为进程id),再执行`supervisord -c /etc/supervisord.conf`即可。 ## supervisor启动子进程 编辑好子进程配置文件后,通过如下命令启动子进程: `supervisorctl update xxx ` 这样就可以将xxx进程添加到supervisor中。其中,supervisorctl的绝对路径可以通过`which supervisorctl`查看,xxx是进程的名称。 ## supervisor常用命令汇总 | 命令 | 含义 | | :-----------------------: | :----------------------: | | supervisorctl status | 查看所有进程运行情况 | | supervisorctl update xxx | 添加xxx进程到supervisor | | supervisorctl start xxx | 启动xxx进程 | | supervisorctl stop xxx | 停止xxx进程 | | supervisorctl restart xxx | 重启xxx进程 | | supervisorctl reload | 重新启动配置中的所有程序 | ## 服务器重启后supervisor启动失败问题 在服务器因为停电或其他需要重启之后,如果在配置文件中没有设置自动重启,这时一般需要手动启动之前supervisor维护的进程。但是直接运行supervisorctl restart xxx可能会报错: ``` unix:///home/iGMAS/software/supervisor/tmp/supervisor.sock refused connection ``` 这时可通过: * 删除这个sock文件:`/home/iGMAS/software/supervisor/tmp/supervisor.sock` * 然后`supervisord -c /etc/supervisord.conf`,再重新启动supervisorctl即可