Mac Supervisor 管理进程
无论是在日常工作中还是平时玩代码中,我总是离不开 Supervisor,其实很久之前我就写过一篇文章:supervisord 部署 Flask,在里面,我仔细讲解了如何在 Linux 环境下安装并且配置 supervisord,并且如何部署应用,应该稍微懂点 Linux 的同学就可以按照指导自己在自己的环境下配置一份出来。但是,我日常更多的情况下是在 Mac 下工作的,虽然 Mac 下已经有很多强大的工具让我的工作保持高效,但是,还是有一些东西是 Mac 上的软件不能提供给我的,所以我还是依赖于 supervisor,所以,本文就将讲述一下如何在 Mac 环境下配置一个好用的进程管理环境。
配置 Supervisor 自启动
对于简单的安装配置 supervisor 就不多说了,还是简单的使用 pip 即可安装完毕,Supervisor 的自己配置也可以参照我之前的文章supervisord 部署 Flask进行。但是,这还不够,因为我的电脑是要重启的(是的,Mac 也要重启,我大概半个月或者一个月重启一次)。默认情况下,重启之后 Supervisor 是不会起来的,所以我还得手动让它起来,然后才能带动我的其他软件起来,这个不是很舒服,所以我希望能够调整一下配置,让 Supervisor 自启动。
在搜索了一番之后,发现在 Mac 中有类似于 systemd 的应用,名为:Launchd,Launchd 是 OSX 用来初始化系统的重要进程,它是内核装载成功之后在 OS 环境中启动的第一个进程(好像很厉害)。而且,有意思的一点在于,在 Launchd 中注册一个应用很简单,只需要一个 plist 文件就可以了,通常这个 plist 文件是放在目录 ~/Library/LaunchAgents
下的。所以我就依样画葫芦写了一个配置:
<?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>io.liqiang.supervisord</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/supervisord</string>
<string>-n</string>
<string>-c</string>
<string>/usr/local/share/supervisor/supervisord.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
测试进程
讲道理到这里应该就是就完了。但是,为了让大家有一个比较好的验证体验,所以我还加了一个 MongoDB 的配置,如果你有兴趣的话,默认配置应该放在:/usr/local/share/supervisor/conf.d/mongod.conf
这个位置,配置内容为:
[program:mongod]
command=/usr/local/mongodb/bin/mongod -f /data/conf/mongodb.yaml
autostart=false
autorestart=false
startretries=3
redirect_stderr=true
stdout_logfile = /var/log/supervisord_mongodb.log
loglevel=info
exitcodes=1,2
依照这个配置完成之后,还是老样子:
$ supervisorctl reread
$ supervisorctl update
$ supervisorctl start mongod
这里应该 MongoDB 是起来了,现在连接上去试一下。
Reference
Mac Supervisor 管理进程的更多相关文章
- Supervisor管理进程
Supervisor管理进程 转载 2016年04月14日 18:26:45 标签: supervisord 28344 Supervisor重新加载配置启动新的进程 liaojie 发布于 1年前, ...
- Supervisor 管理进程,Cloud Insight 监控进程,完美!
Supervisor 是由 Python 语言编写.基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等. Cloud Insight 是一款次世代 ...
- supervisor管理进程 superlance对进程状态报警
supervisor介绍 首先,介绍一下supervisor.Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linu ...
- Linux服务:使用Supervisor管理进程
一.简介 由于基本每个公司都会用到supervisor这个进程管理工具,这里简单阐述一下. Supervisor (http://supervisord.org) 是一个用Python写Linux下的 ...
- supervisor管理进程工具配置
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...
- Django与supervisor 管理进程
1.前言 在Django项目中,我们需要用到一些独立于Django框架外的脚本.这样一些脚本可能需要独立的持续运行,且具有很强的可维护性,这个时候supervisor就可以排上用场了. 基于pytho ...
- 在Docker里使用(支持镜像继承的)supervisor管理进程(转)
这篇文章是受 dockboard 之托帮忙翻译的与 docker 有关的技术文章.译自 Using Supervisor with Docker to manage processes (suppor ...
- php使用supervisor管理进程脚本
supervisor是用python开发的一个在linux系统下的进程管理工具,可以方便的监听,启动,停止一个或多个进程.当一个进程被意外杀死后,supervisor监听到后,会自动重新拉起进程. 一 ...
- pm2 代替 Supervisor 管理进程
前提 我们在使用 Laravel 的时候不免用到列队来处理任务,而 Laravel 官方文档给出的是 Supervisor 来管理进程和监控.但是我们在使用中有下面几个缺点: Supervisor 单 ...
随机推荐
- 914. X of a Kind in a Deck of Cards
In a deck of cards, each card has an integer written on it. Return true if and only if you can choos ...
- Servlet实现session读写
前言 一个女人让他的程序员丈夫去商店买东西:你去附近的商店买些面包,如果有鸡蛋的话,买6个回来,这个丈夫买了6个面包回来,他的妻子大吃一惊:你为什么买了6个面包?! 程序员丈夫回答:因为他们有 ...
- 通过修改EIP寄存器实现32位程序的DLL注入
功能:通过修改EIP寄存器实现32位程序的DLL注入 <如果是64位 记得自己对应修改汇编代码部分> 原理:挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,然后把相关的指令机器 ...
- php错误控制运算符@
PHP支持一个错误控制运算符:@.当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉. 如果用set_error_handle()设定了自定义的错误处理函数,仍然会被调用,但是 ...
- NLP1 —— Python自然语言处理环境搭建
最近开始研究自然语言处理了,所以准备好好学习一下,就跟着<Python自然语言处理>这本书,边学边整理吧 安装 Mac里面自带了python2.7,所以直接安装nltk就可以了. 默认执行 ...
- jvm内存结构(一)(结构总览)
jvm内存结构:<Java虚拟机原理图解>3.JVM运行时数据区 程序计数器: ,是执行的字节码的行号指示器,记录的是正在执行的虚拟机字节码指令的地址. ,每个线程都有独立计数器,互不干扰 ...
- 汽车检测SIFT+BOW+SVM
项目来源于 <opencv 3计算机视觉 python语言实现> 整个执行过程如下: 1)获取一个训练数据集. 2)创建BOW训练器并获得视觉词汇. 3)采用词汇训练SVM. 4)尝试对测 ...
- linux安装应用程序
实验:为 Linux 主机安装应用程序 环境:vmware workstation 14 . redhad-server-6.4 需求:1.使用 RPM 包的方式安装 Mozilla Firef ...
- activity和Task 有关的 Intent启动方式结合intent.setFlags()
通过设置Intent对象的标记,来改变当前任务堆栈中既存的Activity的顺序: FLAG_ACTIVITY_NEW_TASK----简而言之,跳转到的activity根据情况,可能压在一个新建 ...
- 剑指offer四十四之翻转单词顺序列
一.题目 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...