在Linux实时监控某个应用是否运行,未运行,执行运行命令
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
脚本。
原文地址:https://blog.csdn.net/xiaozukun/article/details/142553373
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!