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. 使用python实现深度神经网络 3(转)

    使用python实现深度神经网络 3 快速计算梯度的魔法--反向传播算法 快速计算梯度的魔法--反向传播算法 一.实验介绍 1.1 实验内容 第一次实验最后我们说了,我们已经学习了深度学习中的模型mo ...

  2. angularjs自定义filter

    angular.Module API Overview Methods info([info]); provider(name, providerType); factory(name, provid ...

  3. ionic 状态栏显示异常 statusBar

    从主分支上新建一个分支开发另一个app, 生成之后手机上显示状态栏异常, 如下图, 只显示了电池的色块, 百思不得其解啊. 各种猜测无果, 对比config.xml, 发现statusBar插件版本不 ...

  4. yarn upgrade

    更新一个依赖 yarn upgrade 用于更新包到基于规范范围的最新版本 yarn upgrade --latest # 忽略版本规则,升级到最新版本,并且更新 package.json .

  5. java AOP Before, After, AfterReturning, AfterThrowing, or Around 注解

    https://www.eclipse.org/aspectj/doc/next/adk15notebook/ataspectj-pcadvice.html Advice In this sectio ...

  6. Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test java.lang.IllegalStateException

    不能找到对应的带有@SpringBootConfiguration 的类,你需要将它放在包的最顶层.

  7. Linux Crontab及使用salt进行管理

    一.引言: 最近无意之间看到salt有一个cron的模块,今天就在这里介绍linux crontab以及通过salt的cron对crontab的管理. 二.Linux crontab的介绍: cron ...

  8. 查看PostgreSQL正在执行的SQL

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

  9. glide引出恶心的git submodule

      起因 某一天一个同事,在看那个glide,然后我路过,看到他为何不编译“glide”项目(他说,编译中出错,反正都是看源码而已,所以就懒得搞,然后我出于“好心”,给他弄一下,我擦) 报错: Pro ...

  10. Atitit s2018.5 s5 doc list on com pc.docx  v2

    Atitit s2018.5 s5  doc list on com pc.docx  Acc  112237553.docx Acc Acc  112237553.docx Acc baidu ne ...