supervisord 进程管理器 执行队列

Supervisor 是一个 Linux 下的进程管理器,它会在 queue:work 进程关闭后自动重启。 可代替crontab定时脚本
参考: [supervisor 安装配置使用] https://learnku.com/laravel/t/2126/supervisor-installation-configuration-use
    [supervisor 从安装到使用] https://www.jianshu.com/p/3658c963d28b
    [laravel官文] https://learnku.com/docs/laravel/5.6/queues/1395#e45763

1.安装[centOS]  

yum install supervisor

2.修改配置文件 /etc/supervisord.conf 最后一行 ini改为conf  

vim /etc/supervisord.conf
files=/etc/supervisor.d/*.conf

3./etc/supervisord.d目录下新增配置文件
  vim jlt-worker.conf
    [program:jlt-worker]    ;*[program:应用名称]
    process_name=%(program_name)s_%(process_num)02d   ;
当numprocs为1时,process_name=%(program_name)s; 
当numprocs>=2时,%(program_name)s_%(process_num)02d
    command=php /data/httpd/jlt-staging/artisan queue:work --sleep=3 --tries=3    ;*命令路径
    autostart=true             ;如果是true,当supervisor启动时,程序将会自动启动
    autorestart=true          ;*自动重启
    ;user=user ;user 报错,暂时注释掉 应该是/etc/supervisord.conf需要配置账号密码 我没有设置
    numprocs=8               ;进程数量
    redirect_stderr=true     ;是否重定向
    stdout_logfile=/data/httpd/jlt-staging/storage/logs/worker.log    ;日志文件位置
4.启动+重启 /etc目录下执行 无报错即运行成功 

supervisord -c /etc/supervisord.conf // 启动??
ps aux | grep supervisord // 查看 supervisord是否运行
ps -ef | grep supervisord // 查看是否启动
sudo supervisorctl reload
sudo supervisorctl update
sudo supervisorctl start jlt-worker:*

 

测试

1、写一个php文件

<?php

while(1) {
        echo date('Y-m-d H:i:s');
        echo "\n";
        sleep(1);
}

2、设置supervisor

vim /etc/supervisord.d/1.conf

command=/usr/local/php7/bin/php test.php
stdout_logfile=/home/xxx/data/log/11.log
redirect_stderr = true
autostart = true
autorestart = true

3、启动 supervisord

systemctl start supervisord    启动
systemctl restart supervisord  重启
systemctl stop supervisord     停止

4、查看/home/xxx/data/log/11.log,不停的在输出

5、分析

ps aux|grep test.php   // 查看php脚本进程
root     20537  0.0  2.1 102048 17764 ?        S    17:03   0:00 /usr/local/php7/bin/php test.php
root     20541  0.0  0.1  12108   972 pts/6    R+   17:03   0:00 grep --color=auto test.php

kill -9 20537
ps aux|grep test.php
root     20543  0.0  2.1 102048 17792 ?        S    17:04   0:00 /usr/local/php7/bin/php test.php
root     20545  0.0  0.1  12108  1068 pts/6    R+   17:04   0:00 grep --color=auto test.php

kill -9 进程号  // 停止失败

systemctl stop supervisord // 停止成功
systemctl start supervisord // 启动成功

6、phpresque的守护进程用其监控
(QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 php /xxx/test.php >> /tmp/1.log 2>&1 &)

添加/etc/supervisord.d/2.conf
vim /etc/supervisord.d/2.conf

[program:a2]
directory=/home/xxx/data/www
command=QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380  /usr/local/php7/bin/php /home/xxx/data/www/test2.php
stdout_logfile=/home/xxx/data/log/a2.log
redirect_stderr=true
autostart=true
autorestart=true


systemctl restart supervisord   // 重启supervisord  
cat /home/xxx/data/log/a2.log   // 失败,原因:command后面的命令不认识环境变量设置参数,通过绕个弯子执行脚本即可

vim s1.sh
#!/bin/bash
QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380  /usr/local/php7/bin/php /home/xxx/data/www/test2.php

vim /etc/supervisord.d/2.conf
[program:a2]
directory=/home/xxx/data/www
command=/home/xxx/data/www/s1.sh
stdout_logfile=/home/xxx/data/log/a2.log
redirect_stderr=true
autostart=true
autorestart=true

systemctl restart supervisord
cat /home/xxx/data/log/a2.log  // 成功

 

可参考:http://www.jb51.net/LINUXjishu/400050.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值