亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

Linux下進(jìn)程管理工具Supervisor的安裝配置和基本使用

添加時(shí)間:2016-2-22 3:46:32  添加: 思海網(wǎng)絡(luò) 
Supervisor (http://supervisord.org) 是一個(gè)用 Python 寫的進(jìn)程管理工具,可以很方便的用來啟動、重啟、關(guān)閉進(jìn)程(不僅僅是 Python 進(jìn)程)。除了對單個(gè)進(jìn)程的控制,還可以同時(shí)啟動、關(guān)閉多個(gè)進(jìn)程,比如很不幸的服務(wù)器出問題導(dǎo)致所有應(yīng)用程序都被殺死,此時(shí)可以用 supervisor 同時(shí)啟動所有應(yīng)用程序而不是一個(gè)一個(gè)地敲命令啟動。
安裝

Supervisor 可以運(yùn)行在 Linux、Mac OS X 上。如前所述,supervisor 是 Python 編寫的,所以安裝起來也很方便,可以直接用 pip :



代碼如下:
sudo pip install supervisor

如果是 Ubuntu 系統(tǒng),還可以使用 apt-get 安裝。

supervisord 配置

Supervisor 相當(dāng)強(qiáng)大,提供了很豐富的功能,不過我們可能只需要用到其中一小部分。安裝完成之后,可以編寫配置文件,來滿足自己的需求。為了方便,我們把配置分成兩部分:supervisord(supervisor 是一個(gè) C/S 模型的程序,這是 server 端,對應(yīng)的有 client 端:supervisorctl)和應(yīng)用程序(即我們要管理的程序)。
首先來看 supervisord 的配置文件。安裝完 supervisor 之后,可以運(yùn)行echo_supervisord_conf 命令輸出默認(rèn)的配置項(xiàng),也可以重定向到一個(gè)配置文件里:



代碼如下:
echo_supervisord_conf > /etc/supervisord.conf

去除里面大部分注釋和“不相關(guān)”的部分,我們可以先看這些配置:

[unix_http_server]
file=/tmp/supervisor.sock   ; UNIX socket 文件,supervisorctl 會使用
;chmod=0700                 ; socket 文件的 mode,默認(rèn)是 0700
;chown=nobody:nogroup       ; socket 文件的 owner,格式: uid:gid

;[inet_http_server]         ; HTTP 服務(wù)器,提供 web 管理界面
;port=127.0.0.1:9001        ; Web 管理后臺運(yùn)行的 IP 和端口,如果開放到公網(wǎng),需要注意安全性
;username=user              ; 登錄管理后臺的用戶名
;password=123               ; 登錄管理后臺的密碼

[supervisord]
logfile=/tmp/supervisord.log ; 日志文件,默認(rèn)是 $CWD/supervisord.log
logfile_maxbytes=50MB        ; 日志文件大小,超出會 rotate,默認(rèn) 50MB
logfile_backups=10           ; 日志文件保留備份數(shù)量默認(rèn) 10
loglevel=info                ; 日志級別,默認(rèn) info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=false               ; 是否在前臺啟動,默認(rèn)是 false,即以 daemon 的方式啟動
minfds=1024                  ; 可以打開的文件描述符的最小值,默認(rèn) 1024
minprocs=200                 ; 可以打開的進(jìn)程數(shù)的最小值,默認(rèn) 200

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通過 UNIX socket 連接 supervisord,路徑與 unix_http_server 部分的 file 一致
;serverurl=http://127.0.0.1:9001 ; 通過 HTTP 的方式連接 supervisord

; 包含其他的配置文件


[include]
files = relative/directory/*.ini    ; 可以是 *.conf 或 *.ini

[unix_http_server]
file=/tmp/supervisor.sock   ; UNIX socket 文件,supervisorctl 會使用
;chmod=0700                 ; socket 文件的 mode,默認(rèn)是 0700
;chown=nobody:nogroup       ; socket 文件的 owner,格式: uid:gid
 
;[inet_http_server]         ; HTTP 服務(wù)器,提供 web 管理界面
;port=127.0.0.1:9001        ; Web 管理后臺運(yùn)行的 IP 和端口,如果開放到公網(wǎng),需要注意安全性
;username=user              ; 登錄管理后臺的用戶名
;password=123               ; 登錄管理后臺的密碼
 
[supervisord]
logfile=/tmp/supervisord.log ; 日志文件,默認(rèn)是 $CWD/supervisord.log
logfile_maxbytes=50MB        ; 日志文件大小,超出會 rotate,默認(rèn) 50MB
logfile_backups=10           ; 日志文件保留備份數(shù)量默認(rèn) 10
loglevel=info                ; 日志級別,默認(rèn) info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=false               ; 是否在前臺啟動,默認(rèn)是 false,即以 daemon 的方式啟動
minfds=1024                  ; 可以打開的文件描述符的最小值,默認(rèn) 1024
minprocs=200                 ; 可以打開的進(jìn)程數(shù)的最小值,默認(rèn) 200
 
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
 
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通過 UNIX socket 連接 supervisord,路徑與 unix_http_server 部分的 file 一致
;serverurl=http://127.0.0.1:9001 ; 通過 HTTP 的方式連接 supervisord
 
; 包含其他的配置文件
[include]
files = relative/directory/*.ini    ; 可以是 *.conf 或 *.ini


我們把上面這部分配置保存到 /etc/supervisord.conf(或其他任意有權(quán)限訪問的文件),然后啟動 supervisord(通過 -c 選項(xiàng)指定配置文件路徑,如果不指定會按照這個(gè)順序查找配置文件:$CWD/supervisord.conf, $CWD/etc/supervisord.conf, /etc/supervisord.conf):



代碼如下:
supervisord -c /etc/supervisord.conf


program 配置

上面我們已經(jīng)把 supervisrod 運(yùn)行起來了,現(xiàn)在可以添加我們要管理的進(jìn)程的配置文件?梢园阉信渲庙(xiàng)都寫到 supervisord.conf 文件里,但并不推薦這樣做,而是通過 include 的方式把不同的程序(組)寫到不同的配置文件里。
為了舉例,我們新建一個(gè)目錄 /etc/supervisor/ 用于存放這些配置文件,相應(yīng)的,把 /etc/supervisord.conf 里 include 部分的的配置修改一下:



代碼如下:
[include]
files = /etc/supervisor/*.conf

假設(shè)有個(gè)用 Python 和 Flask 框架編寫的用戶中心系統(tǒng),取名 usercenter,用 gunicorn (http://gunicorn.org/) 做 web 服務(wù)器。項(xiàng)目代碼位于 /home/leon/projects/usercenter,gunicorn 配置文件為 gunicorn.py,WSGI callable 是 wsgi.py 里的 app 屬性。所以直接在命令行啟動的方式可能是這樣的:


代碼如下:
cd /home/leon/projects/usercenter
gunicorn -c gunicorn.py wsgi:app

現(xiàn)在編寫一份配置文件來管理這個(gè)進(jìn)程(需要注意:用 supervisord 管理時(shí),gunicorn 的 daemon 選項(xiàng)需要設(shè)置為 False):
[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的啟動目錄
command = gunicorn -c gunicorn.py wsgi:app  ; 啟動命令,可以看出與手動在命令行啟動的命令是一樣的
autostart = true     ; 在 supervisord 啟動的時(shí)候也自動啟動
startsecs = 5        ; 啟動 5 秒后沒有異常退出,就當(dāng)作已經(jīng)正常啟動了
autorestart = true   ; 程序異常退出后自動重啟
startretries = 3     ; 啟動失敗自動重試次數(shù),默認(rèn)是 3
user = leon          ; 用哪個(gè)用戶啟動
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默認(rèn) false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默認(rèn) 50MB
stdout_logfile_backups = 20     ; stdout 日志文件備份數(shù)
; stdout 日志文件,需要注意當(dāng)指定目錄不存在時(shí)無法正常啟動,所以需要手動創(chuàng)建目錄(supervisord 會自動創(chuàng)建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log

; 可以通過 environment 來添加需要的環(huán)境變量,一種常見的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere

[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的啟動目錄
command = gunicorn -c gunicorn.py wsgi:app  ; 啟動命令,可以看出與手動在命令行啟動的命令是一樣的
autostart = true     ; 在 supervisord 啟動的時(shí)候也自動啟動
startsecs = 5        ; 啟動 5 秒后沒有異常退出,就當(dāng)作已經(jīng)正常啟動了
autorestart = true   ; 程序異常退出后自動重啟
startretries = 3     ; 啟動失敗自動重試次數(shù),默認(rèn)是 3
user = leon          ; 用哪個(gè)用戶啟動
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默認(rèn) false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默認(rèn) 50MB
stdout_logfile_backups = 20     ; stdout 日志文件備份數(shù)
; stdout 日志文件,需要注意當(dāng)指定目錄不存在時(shí)無法正常啟動,所以需要手動創(chuàng)建目錄(supervisord 會自動創(chuàng)建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log

; 可以通過 environment 來添加需要的環(huán)境變量,一種常見的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
一份配置文件至少需要一個(gè) [program:x] 部分的配置,來告訴 supervisord 需要管理那個(gè)進(jìn)程。[program:x] 語法中的 x 表示 program name,會在客戶端(supervisorctl 或 web 界面)顯示,在 supervisorctl 中通過這個(gè)值來對程序進(jìn)行 start、restart、stop 等操作。

supervisorctl 子命令



代碼如下:
$ supervisorctl help
default commands (type help <topic>):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version

使用 supervisorctl

Supervisorctl 是 supervisord 的一個(gè)命令行客戶端工具,啟動時(shí)需要指定與 supervisord 使用同一份配置文件,否則與 supervisord 一樣按照順序查找配置文件。



代碼如下:
supervisorctl -c /etc/supervisord.conf

上面這個(gè)命令會進(jìn)入 supervisorctl 的 shell 界面,然后可以執(zhí)行不同的命令了:


代碼如下:
> status # 查看程序狀態(tài)
> stop usercenter # 關(guān)閉 usercenter 程序
> start usercenter # 啟動 usercenter 程序
> restart usercenter # 重啟 usercenter 程序
> reread # 讀取有更新(增加)的配置文件,不會啟動新添加的程序
> update # 重啟配置文件修改過的程序

上面這些命令都有相應(yīng)的輸出,除了進(jìn)入 supervisorctl 的 shell 界面,也可以直接在 bash 終端運(yùn)行:


代碼如下:
$ supervisorctl status
$ supervisorctl stop usercenter
$ supervisorctl start usercenter
$ supervisorctl restart usercenter
$ supervisorctl reread
$ supervisorctl update

控制守護(hù)進(jìn)程

每次 修改主配置文件 或 增改子配置文件 都需要執(zhí)行 supervisorctl update 使新配置生效:



代碼如下:sudo supervisorctl update
控制守護(hù)進(jìn)程:


代碼如下:
# 控制所有進(jìn)程
sudo supervisorctl start all
sudo supervisorctl stop all
sudo supervisorctl restart all
# 定向控制指定進(jìn)程
sudo supervisorctl stop iot-kb
sudo supervisorctl start iot-kb
sudo supervisorctl restart iot-kb

關(guān)鍵字:Linux、進(jìn)程管理、Supervisor、服務(wù)器
分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項(xiàng)備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎  警警  手機(jī)打開網(wǎng)站