進程管理工具supervisor 和 nohup

守護進程(daemon)
守護進程是一類在後臺運行的特殊進程,用於執行特定的系統任務。不少守護進程在系統引導的時候啓動,而且一直運行直到系統關閉。另外一些只在須要的時候才啓動,完成任務後就自動結束。php

nohup
nohup 是後臺做業的意思, nohup運行的進程將會忽略終端信號運行。即後臺運行一個命令。
nohup COMMAND & 用nohup運行命令可使命令永久的執行下去,和用戶終端沒有關係,例如咱們斷開SSH鏈接都不會影響它的運行。python

supervisor
supervisor是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓。laravel

以前一直使用nohup啓動進程,以後接觸了supervisor,感受更爲合適,因此本身安裝了一遍,簡單記錄了步驟:vim

一、安裝supervisorspa

執行如下命令命令行

yum install python-setuptools
easy_install supervisor

或者rest

#若是easy_install很差使就從官方下載:
wget https://pypi.python.org/packages/80/37/964c0d53cbd328796b1aeb7abea4c0f7b0e8c7197ea9b0b9967b7d004def/supervisor-3.3.1.tar.gz
#而後經過python安裝:
tar zxf supervisor-3.3.1.tar.gz
cd supervisor
python setup.py install

二、配置Supervisorcode

a.建立文件夾和配置文件進程

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf

b.修改/etc/supervisor/supervisord.conf文件內容
在文件結尾[include]節點處
把;files = relative/directory/*.ini
圖片描述
改成files = conf.d/*.conf
圖片描述圖片

c.若supervisor已經啓動,須要執行supervisorctl reload命令使配置文件生效。
d.在/etc/supervisor/下建立conf.d文件夾,及ProjectName.conf(以項目名稱命名的)
e.打開laravel.conf文件,添加內容以下:

[program:laravel]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php/bin/php /data/wwwroot/laravel/artisan queue:listen --tries=3
autostart=true
autorestart=true
user=www
numprocs=2
redirect_stderr=true
stdout_logfile=/data/wwwlogs/worker.log

三、運行supervisord,查看是否生效,執行如下命令:

#運行
supervisord -c /etc/supervisor/supervisord.conf
#查看進程 (ps -ef | grep ProjectName)
ps -ef|grep laravel

四、配置supervisord開機啓動

a.在指定目錄下建立文件supervisord.service

vim /usr/lib/systemd/system/supervisord.service

b.輸入如下內容:

[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

c.執行如下命令:

systemctl enable supervisord

d.驗證是否爲開機啓動:

#提示 enabled 表示成功
systemctl is-enabled supervisord

五、經常使用命令

service supervisord start #啓動
service supervisord stop #中止
service supervisord status #狀態
supervisorctl shutdown #關閉全部任務
supervisorctl stop|start program_name #啓動或中止服務
supervisorctl status #查看全部任務狀態
相關文章
相關標籤/搜索