1、shell脚本(每隔30秒检测一次)
脚本要注意的地方是:在Nodepad++编辑的时候要使用Unix(LF)格式,避免在Linux无法执行命令
#!/bin/bash# RabbitMQ进程名称(可能需要根据你的安装进行调整)
RABBITMQ_PROCESS_NAME="beam.smp"
# RabbitMQ启动命令的路径
RABBITMQ_START_CMD="/path/to/rabbitmq-server"
# 日志文件路径
LOG_FILE="/path/to/rabbitmq-server.log" while true; do # 检查RabbitMQ进程是否存在 if ! pgrep -x "$RABBITMQ_PROCESS_NAME" > /dev/null; then echo "$(date): RabbitMQ process not found, attempting to start..." >> $LOG_FILE # 尝试启动RabbitMQ服务器,并将输出重定向到日志文件 nohup $RABBITMQ_START_CMD >> $LOG_FILE 2>&1 & echo "$(date): RabbitMQ started in background." >> $LOG_FILE else # (可选)记录RabbitMQ正在运行的日志 echo "$(date): RabbitMQ process is running." >> $LOG_FILE fi # 等待30秒 sleep 30
done
2、设置为可执行文件,添加权限
chmod +x check_rabbitmq.sh
3、执行命令
nohup ./check_rabbitmq.sh &
4、增加系统重启时就启动该脚本
1. 使用crontab的@reboot功能
crontab(cron table)是Linux下用于设置周期性被执行的任务的工具。你可以通过添加一个@reboot条目来指定在系统启动时执行某个脚本。
-
打开当前用户的crontab文件:
-
bash复制代码 -
crontab -e -
添加一行来指定你的脚本在系统重启时执行。假设你的脚本位于
/path/to/check_rabbitmq.sh,并且该脚本具有执行权限(通过chmod +x /path/to/check_rabbitmq.sh设置): -
bash复制代码(特别注意,在写完脚本后要enter,否则crond服务无法识别,定时任务无法生效)@reboot /path/to/check_rabbitmq.sh -
保存并退出编辑器。cron服务会自动捕获到这个更改,并在下次系统重启时执行你的脚本。
-
重启 service crond restart
2. 使用systemd服务(推荐对于较新的系统)
如果你的系统使用systemd(大多数现代Linux发行版都使用),你可以创建一个systemd服务单元来管理你的脚本。
-
创建一个systemd服务文件。例如,在
/etc/systemd/system/目录下创建一个名为check-rabbitmq.service的文件: -
bash复制代码sudo nano /etc/systemd/system/check-rabbitmq.service -
在文件中添加以下内容(根据你的脚本路径和需求调整):
-
ini复制代码[Unit]Description=Check RabbitMQ ServiceAfter=network.target[Service]Type=simpleExecStart=/home/user/check_rabbitmq.sh[Install]WantedBy=multi-user.target -
启用并启动服务:
-
bash复制代码 -
sudo systemctl enable check-rabbitmq.servicesudo systemctl start check-rabbitmq.service这样,每次系统启动时,
systemd都会自动启动你的check_rabbitmq.sh脚本。
