Supervisor

Linux守护进程之Supervisor

痞子三分冷 提交于 2019-12-03 13:01:00
1. 什么是守护进程 在linux或者unix操作系统中,守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在linux中,每个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,并且它脱离终端的目的是为了避免进程在运行的过程中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断。它从被执行的时候开始运转,直到整个系统关闭才退出。 2. 守护进程的作用 守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。 3. Supervisor介绍 Linux的后台进程运行有好几种方法,例如nohup,screen等,但是,如果是一个服务程序,要可靠地在后台运行,我们就需要把它做成daemon,最好还能监控进程状态,在意外结束时能自动重启。supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon

Docker使用supervisor启动MongoDB

痞子三分冷 提交于 2019-12-03 00:23:12
Docker的学习中不断的进行完善、不断的学习,把一些原有的方法进行优化。 镜像下载地址: 旧方案地址:如有不成熟没有上传 新方案地址:https://github.com/aarongo/centos-mongodb-supervisor.git 1.旧方案(尝试过多次用centos安装MongoDB,但都已失败告终,最终使用ubuntu安装MongoDB并且启动成功) Dockerfile: FROM ubuntu:12.04 MAINTAINER aaron "aaron.docker@gmail.com" RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \ echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' > /etc/apt/sources.list.d/mongodb.list && \ apt-get update && \ apt-get install -y mongodb-org && \ rm -rf /var/lib/apt/lists/* VOLUME ["/data/db"] CMD ["mongod"] EXPOSE 27017 EXPOSE

Erlang的supervisor

荒凉一梦 提交于 2019-12-02 10:01:50
万事皆有因 这件事情的开始是非常加单的,我想把几个模块独立化,变的可以重复使用。然后就创建了几个application,但是将几个模块整合到同一个项目的时候,犯了一个小小的错误,这个错误虽然不是很致命,但是是一个非常不好的。 产生原因 一开始,我有一个主干项目A,创建了SupervisorA。之后我创建了一个项目B,同时创建了一个SupervisorB。然后将两个项目整合的时候,我项目B中的模块X的start_link的代码如下面这样 -module(mod_x). -export([start_link/1]). start_link(opts)-> Child = {mod_y,{mod_y,start_link,[]},permanent,5000,worker,[mod_y], supervisor:start_child(supervisor_b,Child). 然后我在主干项目中的 SupervisorA的代码写成了这个样子 -module(supervisor_a). -export([start_link/0]). -export([init/1]). start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). init([])-> RestartStrategy = {one_for

flask+uwsgi+supervisor+nginx在局域网服务器上部署实践

喜你入骨 提交于 2019-12-01 23:55:17
flask可以快速的搭建http服务,但是为了搭建网站还是需要web服务器和相关监控管理操作,一套flask、uwsgi、supervisor、nginx是较好的完整解决方案。 本文对自己学习做一个记录,以一个简单的显示‘Hello Flask!’程序来测试,跑通整个流程,方式是在局域网服务器上部署,在个人电脑上访问。 服务器系统是centos7 安装了pyenv pyenv 切换到python3.5版本,不懂版本切换的可以参考我这边文章 https://my.oschina.net/u/3851199/blog/1941983 新建一个简单程序test_flask.py from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello Flask!' if __name__ == '__main__': app.run(host='0.0.0.0',port=8080) 测试局域网访问 在服务器上运行# python test_flask.py,出现如下: 此时,在个人电脑浏览器输入10.12.28.27:8080,(10.12.28.27是我服务器ip),出现如下错误: ok,此时原因可能是服务器防火墙打开了,需要关闭,在服务器上输入关闭防火墙命令

Windows下Nodejs安装express,inspecotr,supervisor

可紊 提交于 2019-12-01 16:28:58
在基于Nodejs平台的开发过程中,Express框架,node-inspector调试工具,node-supervisor代码自动刷新.这几个功能是十分常用的,这里把它们的安装和设置记录一下. 1. 首先是Express框架的安装,安装就是cmd一句话,这里不复制了,主要是安装成功后,在系统环境变量中应该有对应信息,如果express失效,检查一下环境变量中的path即可.以我安装成功的环境变量为参考: C:\Users\shijn\AppData\Roaming\npm C:\Users\shijn\AppData\Roaming\npm\node_modules\express\bin\express C:\Program Files\nodejs\ 2. node-inspector可以说是nodejs开发最好的调试工具,没有之一.webstorm中也是集成了它. 在windows下使用inspector要打开两个cmd窗口,一个输入:node-inspector,另一个输入:node --debug app.js.这里要注意的是,node-inspector对中文路径的项目不怎么支持,可能会爆各种错误.另外一点就是端口占用错误,这个大家可以自行百度解决,很简单. 安装并开启成功后,我们可以根据cmd中提示的地址,在Chrome中调试Nodejs后端代码

内核与Shell的关系

随声附和 提交于 2019-12-01 02:40:53
1, 操作系统的核心-内核 1.1 操作系统的含义 通常包含两种: 完整的软件包,这包括用来管理计算机资源的核心层软件,以及附带的所有标准软件工具,注入命令行解释器、图形用户界面、文件操作工具和文本编辑器等。 在更狭义的范围内,是指管理和分配计算机资源(即CPU、RAM和设备)的核心层软件。 而内核则通常指第二种含义。一般情况下,会将Linux内核可执行文件命名为/boot/vmlinuz或与之类似的路径名。早期的UNIX实现称其内核为UNIX,在后续实现了虚拟内存机制的UNIX系统中,其内核名称变更为vmunix。对于Linux来说,文件名称中的系统名需要调整,而以“z”替换“linux”末尾的“x”,已在表明内核是经过压缩的可执行文件。 1.2 内核的职责 内核用来实现上层服务,上层命令,上层应用等所需要的功能,例如底层磁盘的读写操作,网络的连接,键盘鼠标的驱动,进程调度,内存管理等等都是由操作系统的kernel去完成的,具体如下: 进程调度 :Linux属于抢占式多任务操作系统。这组规则控制着哪些进程获得对CPU的使用,以及每个进程能使用多长时间,这两者都由进程调度程序(而非进程本身)决定。 内存管理 :进程与进程之间、进程与内核之间彼此隔离,因此一个进程无法读取或修改内核或其他进程的内存内容;只需将进程的一部分保持在内存中,这不但降低了每个进程堆内存的需求量

内核与Shell的关系

房东的猫 提交于 2019-12-01 02:24:23
1, 操作系统的核心-内核 1.1 操作系统的含义 通常包含两种: 完整的软件包,这包括用来管理计算机资源的核心层软件,以及附带的所有标准软件工具,注入命令行解释器、图形用户界面、文件操作工具和文本编辑器等。 在更狭义的范围内,是指管理和分配计算机资源(即CPU、RAM和设备)的核心层软件。 而内核则通常指第二种含义。一般情况下,会将Linux内核可执行文件命名为/boot/vmlinuz或与之类似的路径名。早期的UNIX实现称其内核为UNIX,在后续实现了虚拟内存机制的UNIX系统中,其内核名称变更为vmunix。对于Linux来说,文件名称中的系统名需要调整,而以“z”替换“linux”末尾的“x”,已在表明内核是经过压缩的可执行文件。 1.2 内核的职责 内核用来实现上层服务,上层命令,上层应用等所需要的功能,例如底层磁盘的读写操作,网络的连接,键盘鼠标的驱动,进程调度,内存管理等等都是由操作系统的kernel去完成的,具体如下: 进程调度 :Linux属于抢占式多任务操作系统。这组规则控制着哪些进程获得对CPU的使用,以及每个进程能使用多长时间,这两者都由进程调度程序(而非进程本身)决定。 内存管理 :进程与进程之间、进程与内核之间彼此隔离,因此一个进程无法读取或修改内核或其他进程的内存内容;只需将进程的一部分保持在内存中,这不但降低了每个进程堆内存的需求量

hue(03)、Hue切换MySql作为元数据库

帅比萌擦擦* 提交于 2019-11-30 11:05:44
Hue服务默认使用的是内嵌的sqlite数据库作为自己的源数据库,sqlite数据库毕竟是属于一款轻型的数据库服务,在实际项目中还是建议切换MySql或者oracle作为元数据库服务,本文将切换MySql作为Hue的元数据库。 一、环境准备 1.MySql服务(共用之前Hive的元数据服务) 2.Hue4.1服务 二、配置工作 打开hue的/desktop/conf/目录下的 pseudo-distributed.ini文件 编辑pseudo-distributed.ini文件 ,找到[[database]]这一节,修改信息为hdpc05的机器上的MySql元数 据库服务,修改信息如下: engine=mysql //数据引擎类型 host=hdpc05 //数据服务主机 port=3306 //端口号 user=root //用户名 password=123456 //密码 name=hue //数据库名称 三、环境初始化 由于我们之前的信息都存在默认的sqlite数据服务中,我们切换为mysql服务,需要进行初始化的工作 1.在MySql中新建hue的数据库hue 2.初始化hue数据库 在hue服务所在主机,在hue的/bulid/env/bin下执行以下初始化命令: ./hue syncdb ./hue migrate 四、切换验证 经过上面的配置和和初始化服务

进程管理利器Supervisor--centos7下安装与配置

狂风中的少年 提交于 2019-11-30 08:08:13
目录 概述 环境准备 检查python环境 在线安装 配置Supervisor 启动并验证 运维命令 概述 了解supervisor基本概念,请点击查看 进程管理利器Supervisor--入门简介 Supervisor的安装可以有在线安装和离线安装两种方式。安装方式取决于服务器是否联网,联网的话可采用在线安装,否则采用离线安装。 本文仅介绍在线安装方式 转帖请注明原贴地址: https://my.oschina.net/u/2342969/blog/2986173 环境准备 最小化安装centos7 Supervisor3.3.4 Python 2.4及以上, 注意:不能是python3 检查python环境 一般centos7 自带python,通过 python -V 命令查看 执行命令结果如图:如果满足环境准备的python版本,则跳过此步,直接进行下一章安装 安装python2.7.5 #cd /opt/packages #wget https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz #tar -zxvf Python-2.7.5.tgz #cd Python-2.7.5 #./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared

Supervisor重新加载配置启动新的进程

旧时模样 提交于 2019-11-30 05:47:45
一、添加好配置文件后 二、更新新的配置到supervisord supervisorctl update 三、重新启动配置中的所有程序 supervisorctl reload 四、启动某个进程(program_name=你配置中写的程序名称) supervisorctl start program_name 五、查看正在守候的进程 supervisorctl 六、停止某一进程 (program_name=你配置中写的程序名称) pervisorctl stop program_name 七、重启某一进程 (program_name=你配置中写的程序名称) supervisorctl restart program_name 八、停止全部进程 supervisorctl stop all 注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。 来源: https://my.oschina.net/u/3371661/blog/3109088