linux守護進程生命周期管理-supervisord

簡介

supervisor是一個client/server系統,允許用戶控制多個類unix系統的進程,擺脫rc.d腳本的不方便性.supervisor具有簡單,集中化管理,搞笑,可擴展性,高兼容.

整套軟件包含:supervisord(守護進程),supervisorctl(命令行工具),web server(一個web交互界面),XML-RPC 交互

安裝

#centos
yum install epel-release
yum install supervisor
#ubuntu
apt isntall supervisor

配置文件

查看/etc/supervisord.conf內容可以看到,配置文件被分為幾個部分,對這個幾個部分詳細說明

unix_http_server

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)
;chmod=0700                 ; sockef 文件的權限 (默認是 0700,只有屬主有讀寫執行權限)
;chown=nobody:nogroup       ; socket 文件屬主和屬組
;username=user              ; 指定可以訪問賬號(d默認是沒有)
;password=123               ; 指定訪問的密碼(默認是沒有)

這里file配置指定socket的路徑,這個是作為客服端訪問的一個入口,啟動unix是表示這個是一個監聽socket的程序,說明只能在本機訪問,不能給其他網絡客戶端訪問.這里客服端一般是supervisorctl命令.這個unix_http_server是默認啟動的.

如果你需要使用賬號密碼訪問需要給username和password指定賬號和密碼.

inet_http_server

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; 指定監聽的ip和端口
;username=user              ; 指定賬號,默認是沒有
;password=123               ; 指定密碼,默認是沒有,這個賬號密碼最好添加

如果你想將控制入口暴露給網絡中的其他客戶端,可以去掉注釋,可以將這個在防火錢上授權給集中控制客戶端ip,做到集中控制程序.這個配置默認是沒有啟用的,有一定安全隱患在其中.

supervisord

[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; 日志存放路徑,默認是當前目錄下supervisord.log
logfile_maxbytes=50MB       ; 日志文件的最大大小,默認是50MB
logfile_backups=10          ; 日志保存的數量默認是10個
loglevel=info               ; 日志等級是info,默認 info; 其他包括: debug,warn,trace
pidfile=/var/run/supervisord.pid ; pid文件路徑
nodaemon=false              ; 是否運行為后端程序
minfds=1024                 ; 最小可用的文件描述限制是1024
minprocs=200                ; 最小可用的進程數是200
;umask=022                  ; 進程文件umask
;user=chrism                 ; 啟動進程使用的用戶名稱
;identifier=supervisor       ; supervisord標識是supervisor
;directory=/tmp              ; 在啟動的時候需要切換的目錄
;nocleanup=true              ; 不清理臨時文件
;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)
;environment=KEY=value       ; 環境變量
;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)

這個supervisord程序的配置信息.

supervisorctl

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available

這段配置在使用supervisorctl這個命令的時候,默認的參數,serverurl是前面unix_http_server或inet_http_server中指定的地址,username,prompt指定訪問需要用到的賬號密碼(如果有指定的話),history_file指定使用命令的歷史記錄.

自己程序配置段

;[program:theprogramname]
;command=/bin/cat              ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=true              ; retstart at unexpected quit (default: true)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

這個配置段是我們需要重點掌握的

  • command=/bin/cat 程序的路徑,可以攜帶參數
  • process_name=%(program_name)s ; 成熟名稱,默認是program_name,上面的theprogramname
  • numprocs=1 ; 進程數量,一般是1
  • directory=/tmp ; 進程運行的目錄
  • umask=022 ; umask for process (default None)
  • priority=999 ; the relative start priority (default 999)
  • autostart=true ; start at supervisord start (default: true)
  • autorestart=true ; retstart at unexpected quit (default: true)
  • startsecs=10 ; number of secs prog must stay running (def. 1)
  • startretries=3 ; max # of serial start failures (default 3)
  • exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  • stopsignal=QUIT ; signal used to kill process (default TERM)
  • stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  • user=chrism ; setuid to this UNIX account to run the program
  • redirect_stderr=true ; 將錯誤輸出重定向到標準輸出中,這樣就可以將stdout和stderr到同一個文件中
  • stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  • stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  • stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
  • stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  • stdout_events_enabled=false ; emit events on stdout writes (default false)
  • stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
  • stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  • stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
  • stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  • stderr_events_enabled=false ; emit events on stderr writes (default false)
  • environment=A=1,B=2 ; process environment additions (def no adds)
  • serverurl=AUTO ; override serverurl computation (childutils)

我使用的配置一般是

[program:example]
command=ping -i 5 baidu.com
directory=/example
process_name=%(program_name)s
autostart=true
autorestart=true
startsecs=3
startretries=3
stopsignal=TERM
exitcodes=0,2
stopwaitsecs=10
redirect_stderr=true
stdout_logfile = /tmp/example.log
stdout_logfile_maxbytes=1000MB
stdout_logfile_backups=5

include

[include]
files = supervisord.d/*.ini

一般操作是將我們自己的程序的supervisor的文件文件一個一個單獨放在這個files指定的目錄中,可以更好的管理和操作.include會將files中的配置加入進來.

supervisorctl

這個命令可以讓我們控制supervisor所管理的守護進程.

1 添加,刪除,修改配置

在之后的管理中,我們會向include中指定的files中添加,刪除,修改守護進程的配置,每次操作完后都需要是的supervisor重新加載配置.

supervisorctl update

2 重啟,停止,啟動守護進程

#重啟
supervisorctl restart processname
#重啟所有程序
supervisorctl restart all
#停止
supervisorctl stop processname
#停止所有程序
supervisorctl stop all
#啟動
supervisorctl start processname
#啟動所有
supervisorctl start all

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38280.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38280.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38280.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git回退commit的方式

在Git中,回退commit(即撤銷之前的提交)可以通過多種方式來實現。以下是一些常見的方法,以及它們的詳細步驟和注意事項: ### 1. 使用git revert命令 git revert命令用于撤銷某次commit,但它并不會刪除該comm…

FFmpeg 硬件編碼加速文檔介紹

介紹 硬件訪問:許多平臺提供了對專用硬件的訪問,這些硬件可以用于執行解碼、編碼或過濾等視頻相關操作。 性能與資源使用:使用硬件可以加快某些操作的速度或減少其他資源(特別是CPU)的使用,但可能會產生不同的結果或質量較低,或帶來在使用純軟件時不存在的額外限制。 硬…

公爹公婆出首付買房,離婚的兒媳婦能分嗎?

小兩口結婚后為了更好地生活打算購房,男方父母幫助支付首付款,后房屋登記在夫妻名下。后兩人因感情不和打算離婚,女方要求按照房屋的現行價值進行分割,能否得到支持?近日,江蘇省南通市中級人民法院對這起離…

【Postman學習】

Postman是一個非常流行的API開發和測試工具,廣泛用于Web服務的開發、測試和調試。它提供了一個圖形界面,允許用戶輕松地構建、發送和管理HTTP(S)請求,同時查看和分析響應。下面是對Postman接口測試工具的詳細解釋: 1. Postman簡介…

Linux安裝Node-RED并實現后臺運行及開機啟動

首先確保系統中已近成功安裝Node.js,并保證需要的合適版本: 關于node.js的安裝可以參考我的另一篇博文:《AliyunOS安裝Node.js》。 然后就可以使用npm工具安裝Node-RED了,很簡單使用如下命令: sudo npm install -g --unsafe-per…

【代碼隨想錄算法訓練Day53】LeetCode 739.每日溫度、LeetCode 496.下一個更大元素、LeetCode 503. 下一個更大元素 II

Day53 單調棧 LeetCode 739.每日溫度 經典的單調棧題目&#xff0c;確實的感受到了單調棧的強大之處。 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<int> st;vector<int> res(temperatures.size…

php+redis 生成二維碼庫

項目場景&#xff1a; 活動報名二維碼&#xff0c;生成 30W 的二維碼量存放到 redis 中&#xff0c;并通過 redis 讀取&#xff0c;以減輕 mysql 數據庫的壓力。 實現很簡單&#xff0c;分為兩步&#xff1a; 1、生成&#xff1a;通過 for 循環&#xff0c;以集合方式插入到…

MATLAB使用系統辨識工具箱建立PID水溫的傳遞函數系數

概述 利用PID控制水溫&#xff0c;由于實際在工程項目中&#xff0c;手動調節PID參數比較耗費時間&#xff0c;所以可以先利用MATLAB中的Simulink軟件建立模型&#xff0c;先在仿真軟件上調節大概的PID參數&#xff0c;再利用此PID參數為基礎在實際的工程項目中手動調節PID參數…

這些并發編程技術你都知道嗎?

與其碌碌無為&#xff0c;不如興風作浪。 雖然不是所有的系統都需要很多的并發編程技術&#xff0c;但是掌握常見的高并發秘籍&#xff0c;便能讓我們的系統快起來&#xff0c;面對訪問量的劇增從容應對。 接下來&#xff0c;為我們一起來看看常見的高并發技術有哪些。總結起來…

SSH版本升級-openssh-9.7p1

SSH版本升級-openssh-9.7p1 1、查看當前版本2、安裝openssl2.1、編譯安裝ssl 3、下載新版本SSH4、備份原有的SSH配置5、上傳文件并解壓6、卸載原有的openssh包7、編譯安裝openssh7.1、在解壓后的目錄&#xff0c;初始化openssh7.2、將文件拷回7.3、修改配置文件 最終實現&#…

linux系統中給java 應用配置開機自動啟動

第一步需要一個控制java應用啟動&#xff0c;停止&#xff0c;重啟的腳本&#xff0c;腳本內容如下&#xff0c;我是springboot應用&#xff0c;其他的可以根據情況改寫. #!/bin/bashAPP_NAME/data/oa/start-2.0.jar #執行命令有誤時&#xff0c;提示使用說明參數 usage() {ec…

DDD學習筆記五

模型引力場&#xff1a;聚合 強作用力體現&#xff1a; 某個領域模型是另一些模型存在的前提&#xff0c;沒有前者&#xff0c;后者就失去了生存的意義。 一組領域模型之間存在關聯的領域邏輯&#xff0c;任何時候都不能違反。 一組領域模型必須以一個完整的、一致的狀態呈現給…

CSDN寫文章時需要上、下標字號怎么輸?

上標&#xff1a;?^^&#xff0c;符號中間加字 下標&#xff1a;~~&#xff0c;符號中間加字 前題是用MD編輯器&#xff0c;不然白搭&#xff1a; 我是感覺CSDN這個文本編輯比較拉&#xff0c;非常想吐槽。

dB分貝入門

主要參考資料&#xff1a; dB&#xff08;分貝&#xff09;定義及其應用: https://blog.csdn.net/u014162133/article/details/110388145 目錄 dB的應用一、聲音的大小二、信號強度三、增益 dB的應用 一、聲音的大小 在日常生活中&#xff0c;住宅小區告知牌上面標示噪音要低…

vue2 element ui 表單 動態增加表單項 表單項值不可重復 select多選

案例 <template><el-form :model"form" ref"form" label-width"70px"><el-form-item><el-button icon"el-icon-plus" type"primary" plain click"add">新增</el-button><el-b…

VUE3-Elementplus-form表單-筆記

1. 結構相關 el-row表示一行&#xff0c;一行分成24份 el-col表示列 (1) :span"12" 代表在一行中&#xff0c;占12份 (50%) (2) :span"6" 表示在一行中&#xff0c;占6份 (25%) (3) :offset"3" 代表在一行中&#xff0c;左側margin份數 el…

后勞動經濟學(PLE):AI時代的工作未來

引言 隨著人工智能&#xff08;AI&#xff09;和自動化技術的飛速發展&#xff0c;我們迎來了一個新的經濟范式——后勞動經濟學&#xff08;PLE&#xff09;。這一概念主要討論在AI和自動化技術超越人類能力的關鍵領域后&#xff0c;機器將不可避免地在許多經濟活動中取代人類…

如何玩單機版:QQ音速

前言 我是研究單機的老羅&#xff0c;今天教大家帶來一款懷舊游戲QQ音速 的教程。根據我的文章&#xff0c;一步一步就可以玩了。 如今市面上的資源參差不齊&#xff0c;大部分的都不能運行&#xff0c;本人親自測試&#xff0c;運行視頻如下&#xff1a; QQ音速 搭建教程 此…

python之GIL鎖詳解

目錄 1.GIL是什么以及影響 2.為什么會有GIL鎖&#xff1f; 1.GIL是什么以及影響 在Python中&#xff0c;多線程的并發性受到全局解釋器鎖&#xff08;GIL&#xff0c;Global Interpreter Lock&#xff09;的影響。GIL是CPython&#xff08;Python的官方實現&#xff09;中的…

vscode下無法識別node、npm的問題

node : 無法將“node”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱 因為node是在cmd安裝的&#xff0c;是全局安裝的&#xff0c;并不是在這個項目里安裝的。 解決方案&#xff1a; 1.在vscode的控制臺&#xff0c;針對一個項目安裝特定版本的node&#xff1b; 2.已經…