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 Service
|
| |After=network.target
|
| | |
| |[Service]
|
| |Type=simple
|
| |ExecStart=/home/user/check_rabbitmq.sh
|
| | |
| |[Install]
|
| |WantedBy=multi-user.target
| -
启用并启动服务:
-
bash复制代码
|---|-------------------------------------------------|
| | sudo systemctl enable check-rabbitmq.service
|
| | sudo systemctl start check-rabbitmq.service
|
这样,每次系统启动时,systemd
都会自动启动你的check_rabbitmq.sh
脚本。