php使用supervisor管理進程腳本

supervisor是用python開發的一個在linux系統下的進程管理工具,可以方便的監聽,啟動,停止一個或多個進程。當一個進程被意外殺死后,supervisor監聽到后,會自動重新拉起進程。

一、supervisor的安裝

1、通過easy_install安裝

yum -y install python-setuptools
easy_install supervisor

2、通過yum安裝

yum -y install supervisor

3、通過pip安裝

yum -y install epel-release
yum -y install python-pip
pip install supervisor

安裝好后,會生成三個執行命令,echo_supervisord_conf,supervisorctl,supervisord。

?

二、supervisor的配置文件

supervisor的默認配置文件在 /etc/supervisord.conf 下,如果沒有可以通過如下命令生成

echo_supervisord_conf > /etc/supervisord.conf

常用的配置項如下:

[unix_http_server]
file=/tmp/supervisor.sock   ; unix socket文件,supervisorctl會使用
;chmod=0700                 ; socket文件權限
;chown=nobody:nogroup       ; socket文件所屬用戶和用戶組[inet_http_server]          ; web管理界面
port=127.0.0.1:9001         ; 管理界面的IP和端口
username=admin              ; 登陸管理界面的用戶名
password=123456             ; 登陸管理界面的密碼[supervisord]
logfile=/tmp/supervisord.log ; 日志文件
logfile_maxbytes=50MB        ; 日志文件大小,為0表示不限制
logfile_backups=10           ; 日志文件備份數量,為0表示不備份
loglevel=info                ; 日志級別,也可設置為 debug,warn,trace
pidfile=/tmp/supervisord.pid ; PID文件路徑
nodaemon=false               ; 是否前臺啟動,為false表示守護進程方式
minfds=1024                  ; 打開文件描述符的最小值
minprocs=200                 ; 創建進程數的最小值[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通過 unix sokcet 連接supervisord
;serverurl=http://127.0.0.1:9001 ; 通過http方式連接supervisord[include]
files = /etc/supervisord/confs/*.conf ; 包含其他配置文件,可以是.conf或.ini

我們需要把 [include] 前面的注釋打開,并配置 files 的路徑。

創建 files 中配置的目錄。

mkdir -p /etc/supervisord/confs/

  

三、配置一個php腳本進程

我們在?/etc/supervisord/confs/ 目錄下創建一個 demo.conf 文件。

;demo表示程序名稱
[program:demo]
;需要執行的命令
command=php demo.php
;命令執行的目錄
directory=/data/wwwroot
;環境變量
environment=PATH="/data/nmp/php/bin/"
;哪個用戶運行
user=root
;是否自啟動
autostart=true
;是否自動重啟
autorestart=true
;自動重啟時間間隔,單位秒
startsecs=3
;錯誤日志文件
stderr_logfile=/tmp/demo.err.log
;輸出日志文件
stdout_logfile=/tmp/demo.out.log

demo.php的代碼如下:

<?php$i = 0;
while(true) {$i++;echo $i, PHP_EOL;sleep(1);
}

  

四、管理進程。

管理進程,需要我們啟動?supervisor 服務,這里我們配置 systemctl,開機自動啟動?supervisor。

創建?/usr/lib/systemd/system/supervisord.service 文件,配置如下:

[Unit]
Description=Supervisor daemon[Service]
Type=forking
ExecStart=/usr/bin/supervisord
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s[Install]
WantedBy=multi-user.target

啟用配置

systemctl enable supervisord.service

啟動?supervisord

systemctl start supervisord.service

成功后,就可以通過?supervisorctl 交互命令管理進程腳本了。

讀取有更新的配置文件

supervisorctl reread

更新配置文件修改過的程序

supervisorctl update

如果修改過?/etc/supervisord.conf 請使用如下命令

supervisorctl reload

啟動,停止,重啟,程序。

supervisorctl start 程序名
supervisorctl stop 程序名
supervisorctl restart 程序名

  

五、supervisor圖形化管理界面

需要開啟?/etc/supervisord.conf 文件中的 [inet_http_server]

[inet_http_server]
port=0.0.0.0:9001
username=admin
password=123456

設置完后,要開放 9001 端口,并重啟?supervisor

firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --reload

重啟?supervisor

supervisorctl reload

  

轉載于:https://www.cnblogs.com/jkko123/p/10846038.html

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

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

相關文章

重寫規則和重載規則

重寫規則&#xff1a; 發生在有繼承關系的類之間&#xff08;同一類就是重載了&#xff09;相同的方法名&#xff0c;參數列表&#xff0c;返回類型可見性&#xff08;public,protected,private&#xff09;不能被縮小異常不能被放大規則與c中不一樣靜態類型不能被重寫方法重載…

消息中間件:RocketMQ 介紹(特性、術語、原理、優缺點、消息順序、消息重復)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 消息中間件的作用 1. 應用解耦 2. 異步處理 比如用戶注冊場景&#xff0c;注冊主流程完成以后&#xff0c;需要調用郵件系統發送郵件…

C# JsonHelper類

記錄一下&#xff0c;方便下次用。 public class JsonHelper{#region Json/// <summary>/// JavaScriptSerializer/// </summary>/// <typeparam name"T"></typeparam>/// <param name"obj"></param>/// <returns&…

[譯】Redux入門教程(一)

前言 老外寫技術文章真是叼&#xff0c;這是國外的一個程序員寫的一個簡單易懂,循序漸進的Redux教程&#xff0c;本著共享的精神&#xff0c;就翻譯出來給大家一起看&#xff0c;文章最后有鏈接&#xff0c;不想看我翻譯的直接去看原文吧。 下面是原教程的英文目錄 這篇先更三分…

使用 Intellij Idea 打包 java 工程為可執行 jar 包

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 其實還有個簡單多了方法&#xff0c;見&#xff1a; 超簡單方法&#xff1a; Intellij Idea 把 java 工程打成可運行的 jar 步驟&#x…

QuickStart系列:docker部署之Gitlab本地代碼倉庫

gitlab是可以在本地搭建的使用git作為源代碼管理的倉庫。 運行環境&#xff1a; win10vmware14docker7docker 1. 使用命令拉取鏡像&#xff08;非必須&#xff0c;耗時比較久&#xff0c;這里以ce為準&#xff0c;ce是社區版&#xff0c;ee是企業版&#xff09;&#xff1a; do…

超簡單方法: Intellij Idea 把 java 工程打成可運行的 jar

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 找到 Intellij Idea 最下面的 Terminal 選項&#xff0c;并點擊進入該界面。 2. 在光標位置輸入命令&#xff1a;mvn clean 。清理…

LDAP-輕量級目錄訪問協議(統一認證)

概念 LDAP是輕量目錄訪問協議&#xff0c;英文全稱是Lightweight Directory Access Protocol&#xff0c;一般都簡稱為LDAP。 參考資料 LDAP概念和原理介紹 我花了一個五一終于搞懂了OpenLDAP LDAP-Apache Directory Studio使用&#xff08;創建DC.OU及用戶&#xff09; 轉載于…

kafka集群搭建(消息)

1、Kafka使用背景在我們大量使用分布式數據庫、分布式計算集群的時候&#xff0c;是否會遇到這樣的一些問題&#xff1a;我們想分析下用戶行為&#xff08;pageviews&#xff09;&#xff0c;以便我們設計出更好的廣告位我想對用戶的搜索關鍵詞進行統計&#xff0c;分析出當前的…

[轉]在Windows 下使用OpenCL

目前&#xff0c;NVIDIA和AMD的Windows driver均有支援OpenCL&#xff08;NVIDIA的正式版driver是從195.62版開始&#xff0c;而AMD則是從9.11版開始&#xff09;。NVIDIA的正式版driver中包含OpenCL.dll&#xff0c;因此可以直接使用。AMD到目前為止&#xff0c;則仍需要安裝其…

docker 之 Dockerfile 實踐

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 上一篇介紹了Dockerfile中使用的指令&#xff0c;現在開始進行指令實踐 先查看下本地的鏡像&#xff0c;選一個作為base image&#xf…

tomcat啟動后命令行日志中文亂碼

這是日志的編碼設置和窗體的編碼格式不一致。 將 conf\logging.properties 文件中的 UTF-8 改成 GBK 重啟tomcat &#xff08;右鍵cmd標題欄部分&#xff0c;可以查看cmd屬性&#xff09; 轉載于:https://www.cnblogs.com/Echiops/p/10974587.html

Coursera機器學習筆記(一) - 監督學習vs無監督學習

轉載 http://daniellaah.github.io/2016/Machine-Learning-Andrew-Ng-My-Notes-Week-1-Introduction.html 一. 監督學習 什么是監督學習? 我們來看看維基百科中給出的定義: 監督式學習&#xff08;英語&#xff1a;Supervised learning&#xff09;&#xff0c;是一個機器學習…

基于OpenCL的mean filter性能

1.對于一個標準的3*3 均值濾波&#xff0c;kernel代碼如下&#xff1a; 使用buffer/image緩沖對象 __kernel void filter(__global uchar4* inputImage, __global uchar4* outputImage, uint N) {int x get_global_id(0);int y get_global_id(1);int width get_global_size(…

Docker 實戰:編寫 Dockerfile

一、編譯鏡像 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 編譯鏡像 Dockerfile類似于Makfile&#xff0c;用戶使用docker build就可以編譯鏡像&#xff0c;使用該命令可以設置編譯…

dubbo-環境搭建,實現一個簡單地dubbo實例(附github地址)

一、建立maven模塊和provider、consumer、service子模塊&#xff0c;其中service是開發接口的模塊 建立一個maven模塊&#xff0c;不選擇樣板&#xff0c;直接next知道完成&#xff0c;建立三個子模塊,建立完后發現各個模塊的java目錄不是源目錄 右鍵——>make Directory as…

static 二次理解

當api底層用到static修飾的話&#xff0c;因為是類的&#xff0c;此容器中只有一份轉載于:https://blog.51cto.com/jiaxiaoxu/2394844

AMD 5XXX 系列顯卡的 peak bandwidth計算

在ATI Stream Computing Programming Guide中&#xff0c;例舉了AMD 5系列顯卡的參數信息。 我比較關注其中Peak bandwidths的計算&#xff0c;以便在opencl程序測試bandwidth利用率。 下面&#xff0c;我以5870為例&#xff0c;探討一下如何計算得到這些結果&#xff1a; L1 c…

Docker : Dockerfile 定制鏡像

使用 Dockerfile 定制鏡像 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 鏡像的定制實際上就是定制每一層所添加的配置、文件。如果我們可以把每一層修改、安裝、構建、操作的命令都寫…

動態規劃 最長上升子序列

題意&#xff1a;給出一個序列&#xff0c;求它的最長上升子序列的長度 題目鏈接&#xff1a;https://ac.nowcoder.com/acm/problem/26156 輸入:n代表長度&#xff0c;然后是一個字符串 分析&#xff1a;用dp[i]表示長度為i1的上升子序列末尾元素的最小值&#xff08;一開始初始…