在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条目来指定在系统启动时执行某个脚本。

  1. 打开当前用户的crontab文件:

  2. bash复制代码

|---|--------------|
| | crontab -e |

  1. 添加一行来指定你的脚本在系统重启时执行。假设你的脚本位于/path/to/check_rabbitmq.sh,并且该脚本具有执行权限(通过chmod +x /path/to/check_rabbitmq.sh设置):

  2. bash复制代码(特别注意,在写完脚本后要enter,否则crond服务无法识别,定时任务无法生效

    |---|--------------------------------------|
    | | @reboot /path/to/check_rabbitmq.sh |

  3. 保存并退出编辑器。cron服务会自动捕获到这个更改,并在下次系统重启时执行你的脚本。

  4. 重启 service crond restart

2. 使用systemd服务(推荐对于较新的系统)

如果你的系统使用systemd(大多数现代Linux发行版都使用),你可以创建一个systemd服务单元来管理你的脚本。

  1. 创建一个systemd服务文件。例如,在/etc/systemd/system/目录下创建一个名为check-rabbitmq.service的文件:

  2. bash复制代码

    |---|--------------------------------------------------------|
    | | sudo nano /etc/systemd/system/check-rabbitmq.service |

  3. 在文件中添加以下内容(根据你的脚本路径和需求调整):

  4. ini复制代码

    |---|-------------------------------------------|
    | | [Unit] |
    | | Description=Check RabbitMQ Service |
    | | After=network.target |
    | | |
    | | [Service] |
    | | Type=simple |
    | | ExecStart=/home/user/check_rabbitmq.sh |
    | | |
    | | [Install] |
    | | WantedBy=multi-user.target |

  5. 启用并启动服务:

  6. bash复制代码

|---|-------------------------------------------------|
| | sudo systemctl enable check-rabbitmq.service |
| | sudo systemctl start check-rabbitmq.service |

这样,每次系统启动时,systemd都会自动启动你的check_rabbitmq.sh脚本。

相关推荐
AOwhisky1 小时前
Linux(CentOS)系统管理入门笔记(第四期)——文件系统(下篇):文件与目录操作实战——cpmvmkdirrmln
linux·运维·笔记·centos·云计算·文件系统
岑梓铭1 小时前
考研408《操作系统》复习笔记,第四章《4.2.2 文件操作、文件共享、文件保护》
linux·考研·操作系统·文件系统·408
Mr.HeBoYan1 小时前
DPDK为什么越来越少使用rte_ring?——从Lock-Free到Run-to-Completion,重新理解现代DPDK架构演进(上)
linux·网络·算法·性能优化·架构·dpdk
XTIOT6662 小时前
CRPT 诚实标识采集落地技术实践:分工况硬件选型与合规数据标准化解决方案
大数据·运维·人工智能·嵌入式硬件·物联网
云栖梦泽2 小时前
从 IMX415 摄像头驱动理解 Media Controller 框架
linux·开发语言·c++·嵌入式硬件
纳兰青华3 小时前
CentOS Stream 9 下载与安装完全指南:为什么它是当前最稳妥的选择?
linux
草邦设计开发团队_媒体资源平台3 小时前
Linux 稳定常驻启动 PHP 队列,服务器重启自动恢复
linux·服务器·php·队列执行
想你依然心痛3 小时前
嵌入式容器:Docker与BalenaOS在边缘设备上的实践——容器运行时与OTA
运维·docker·容器
竣达技术3 小时前
NAS / 服务器断电数据丢失?UPS 配套 USB关机保护板,市电断电池低自动提示服务器/电脑关机
运维·服务器·电脑
Lottie20263 小时前
京东电商进阶运营:精准定价+安全铺货+竞品监控+利润管控全自动化方案
运维·安全·自动化