supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(守护进程)。可以用他来管理自己的“服务程序”。

安装

首先安装Python,Mac系统好像自带。

执行 sudo pip install supervisor 安装

安装pip

下载get-pip.py,然后执行。具体请查看文档

$ wget https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py
...
$ sudo python get-pip.py

配置

使用默认配置项

$ sudo echo_supervisord_conf > /etc/supervisord.conf
$ sudo vim /etc/supervisord.conf

其他可以暂时忽略,修改最底下一行

; 包含其他的配置文件
[include]
files = /etc/supervisor/*.conf ; 可以随意指定,目录不存在请先建立。配置文件可以是 *.conf 或 *.ini

测试一下

supervisord -c /etc/supervisord.conf
ps aux | grep supervisord

配置“服务”

这里我用“IDEA License Server”做示例

sudo vim /etc/supervisor/idea.conf

文件内容

[program:idea]                          ; 是应用程序的唯一标识,不能重复
directory = /data/jidea-server ; 程序的启动目录
command = /data/jidea-server/IntelliJIDEALicenseServer_darwin_amd64 ; 启动命令
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /var/log/supervusor/jidea-server.log ; stdout 日志文件,注意:要确保目录已经建立并且可以访问(写权限)

使用命令supervisorctl -c /etc/supervisord.conf加装并启动。如果一切正常可以使用命令supervisorctl status查看状态。例如:

$ supervisorctl status
idea RUNNING pid 1177, uptime 0:32:00
$

以上输出表示一起正常,如果有错误,请“具体情况具体分析”本文档暂不做相关讨论。

使用 launchctl 来启动 supervisor 自身

launchctl是Mac自带的工具,具体使用方法请看官方文档或者问度娘。
这里我在 /Library/LaunchAgents 目录下, 创建一个 supervisord.plist 文件, 命令:sudo vim /Library/LaunchDaemons/supervisord.plist,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>supervisord</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/supervisord</string>
<string>-n</string>
<string>-c</string>
<string>/etc/supervisord.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

注意:检查文件的权限

$ ls -lsa /Library/LaunchDaemons
total 24
0 drwxr-xr-x 5 root wheel 170 11 22 09:44 .
0 drwxr-xr-x+ 67 root wheel 2278 11 16 14:41 ..
8 -rw-r--r-- 1 root wheel 590 11 16 17:52 supervisord.plist

supervisord.plist必须是属于root用户的。不是的话修改:sudo chown root:wheel /Library/LaunchDaemons/supervisord.plist。最后启动他

sudo launchctl load /Library/LaunchDaemons/supervisord.plist

注意,在启动前先检查一下supervisord时不时已经在运行了,如果已经运行请先kill掉。

注意: 必须在这个目录(/Library/LaunchDaemons)下才会使用root启动。

$ ps aux | grep supervisord
user 1167 0.0 0.2 4304600 15744 ?? Ss 9:52上午 0:00.51 /usr/bin/python /usr/local/bin/supervisord -n -c /etc/supervisord.conf
$ kill -4 1167

 

作者:xBei
链接:https://www.jianshu.com/p/050273859836
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

mac下supervisor安装及简单配置的更多相关文章

  1. Nginx在windows环境下的安装与简单配置

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一. 下载并安装Nginx 去Nginx官网下载 我这里选取nginx/Windows-1.10.3版本,下载后解压出来即可,解压出来的路径不能含 ...

  2. windows下redis安装以及简单配置

    1.下载redis 下载地址https://github.com/dmajkic/redis/downloads.有32bit和64bit根据自己需要选择就可以了. 2.安装redis 首先使用cmd ...

  3. vim7.4在Win8下的安装及简单配置

    软件环境 vim74 git vim中文帮助 vundle安装——插件管理软件 cd vim所在路径/vimfiles/bundle git clone https://github.com/gmar ...

  4. Mac下Tomcat安装与Intellij IDEA配置Tomcat

    Mac下Tomcat安装与Intellij IDEA配置Tomcat 一 安装 1 下载地址:https://tomcat.apache.org/download-90.cgi 2 将压缩包解压后移至 ...

  5. Mac下Maven安装与配置

    Mac下Maven安装与配置 下载maven http://maven.apache.org/download.cgi main->download菜单下的Files 下载后解压在Documen ...

  6. Linux下的GitHub安装与简单配置教程 ~ 转载

    Linux下的GitHub安装与简单配置教程   1.GitHub简介 Git是一个分布式版本控制系统,与其相对的是CVS.SVN等集中式的版本控制系统. 2.Git的安装 1)安装Git a.查看与 ...

  7. Mac下删除安装的pkg

        Mac下的安装和删除都比windows更加简单清晰,这点在dmg方式下非常明显,但很多时候我们会使用pkg来进行安装,这样的安装想删除就有点麻烦了. 比如,我安装了Golang这个pkg用于g ...

  8. Mac 下 docker安装

    http://www.th7.cn/system/mac/201405/56653.shtml Mac 下 docker安装 以及 处理错误Cannot connect to the Docker d ...

  9. docker的安装和简单配置

    docker的安装和简单配置 docker是balabalabala...懒得介绍. 国内安装docker很蛋疼,按照官方配置好了软件源之后,几十MB的安装文件下载要半天,没办法,docker默认的软 ...

随机推荐

  1. Collection was modified; enumeration operation may not execute Dictionary 集合已修改;可能无法执行枚举操作

    public void ForeachDic() { Dictionary dic = new Dictionary(); dic.Add("1", 10); dic.Add(&q ...

  2. Spring Boot 中application.yml与bootstrap.yml的区别

    其实yml和properties文件是一样的原理,且一个项目上要么yml或者properties,二选一的存在. 推荐使用yml,更简洁. bootstrap与application1.加载顺序这里主 ...

  3. 每天一个linux命令(11):nl命令

    1.命令简介 nl (Number of Lines) 将指定的文件添加行号标注后写到标准输出.如果不指定文件或指定文件为"-" ,程序将从标准输入读取数据. 2.用法 nl [选 ...

  4. iOS CALayer 绘图模糊有锯齿的解决方案

    在CALayer中绘制图形会出现锯齿和模糊,同样绘图在UIView中就没有问题.经查资料发现不自动处理两倍像素的情况. 解决方案为:设置layer的contentsScale属性为[[UIScreen ...

  5. IoC之AutoFac(二)——解析服务

    阅读目录 一 Resolve方法 二 TryResolve和ResolveOptional方法 三 解析服务时传参 3.1 可用参数类型 3.2 带反射组件的参数 3.3 具有Lambda表达式组件的 ...

  6. SublimeText3追踪函数工具CTags设置及使用

    第一步:在 ST3 安装 CTags 插件 1. 在 ST3 快捷键 Crtl+Shift+P 然后输入 pci ,选择“ Package Control: Install Package ”启动安装 ...

  7. 查看PostgreSQL正在执行的SQL

    SELECT procpid, START, now() - START AS lap, current_query FROM ( SELECT backendid, pg_stat_get_back ...

  8. Eclipse安装Git插件及简单操作

    0. 前言 说一件事,说起来也是好笑,工作三年半了,还没接触到团队开发,都是一个人小打小闹.因此连Git都没有使用过.感觉好Low的,这一篇,简单讲一下,Eclipse配置Git插件,并提交代码到Gi ...

  9. ph 提交代码的步骤;

    ph 提交代码的步骤: git status 查看状态: ls -ah 查看文件: git stash list 查看本地缓存的文件: git branch 查看本地的分支: git checkout ...

  10. 数据类型表(DELPHI、C++)

    delphi整型数据表 Integer -2147483648..2147483647 signed 32-bit Cardinal 0..4294967295 unsigned 32-bit Sho ...