#!/usr/bin/env bash # +------------------------------------------------------------------------- # | 启动RabbitMQ消费端 # | 备注①:把当前文件的硬盘路径追加到/etc/rc.d/rc.local文件尾部。 # | 备注②:当前文件需要有执行权限。 # | 备注③:RabbitMQ消费端依赖RabbitMQ服务和MySQL服务(即必须等这两个服务启 # | 动之后再CLI执行PHP脚本)。 # +------------------------------------------------------------------------- ######################### 以下变量请根据实际情况设置·开始 ######################### # PHP可执行文件 php="/program/php/bin/php" # RabbitMQ的消息消费端(在后台执行) consumer="/inetpub/wwwroot/www_domain_com/lib/MQConsumer.php" # MySQL进程的PID文件(上面的PHP脚本依赖MySQL,需要通过PID文件来检查MySQL是否已启动) mysql_pid="/program/mysql/mysql.pid" ######################### 以下变量请根据实际情况设置·结束 ######################### # 当前时间戳 timestamp_now=$(date '+%s') # 启动RabbitMQ消费端的时间期限(若干秒后MySQL还未启动就取消启动RabbitMQ消费端) timestamp_deadline=$((${timestamp_now} + 180)) while [ ${timestamp_now} -le ${timestamp_deadline} ]; do # 检查MySQL服务是否已启动 if [ -f ${mysql_pid} ]; then mysql_start="Y" else mysql_start="N" fi # 检查RabbitMQ服务是否已启动 rabbitmq_status=$(/usr/bin/systemctl status rabbitmq.service) if [[ ${rabbitmq_status} =~ "Active: active" ]]; then rabbitmq_start="Y" else rabbitmq_start="N" fi if [ ${mysql_start} == "Y" -a ${rabbitmq_start} == "Y" ]; then # 休眠10秒后再启动RabbitMQ的消息消费端 sleep 10s # 启动RabbitMQ的消息消费端(通过“nohup …… >/dev/null 2>&1 &”实现在后台执行) nohup ${php} ${consumer} >/dev/null 2>&1 & # RabbitMQ的消息消费端启动成功,可以退出while循环 break else # 休眠1秒再进行下一轮循环 sleep 1s timestamp_now=$(date '+%s') fi done
Copyright © 2023 码农人生. All Rights Reserved