记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

OpenWrt系统下进程监测和守护脚本

OpenWrt系统下进程监测和守护脚本

例如在OpenWrt系统下监测Docker服务并在进程结束时自动启动Docker,可以创建一个脚本来完成这个任务,实现试试监测系统,发现进程挂掉就自动启动(如果给Docker的进程名称和启动命令改成你自己的程序,就可以实现任意程序的进程守护)。
XML/HTML代码
  1. #!/bin/sh
  2.  
  3. # 检测Docker服务进程的状态
  4. check_docker_status() {
  5.   local docker_pid
  6.   docker_pid=$(ps | grep -v grep | grep docker | awk '{print $1}')
  7.   if [ -n "$docker_pid" ]; then
  8.     echo "Docker服务正在运行 (PID: $docker_pid)"
  9.     return 0
  10.   else
  11.     echo "Docker服务未运行"
  12.     return 1
  13.   fi
  14. }
  15.  
  16. # 启动Docker服务
  17. start_docker() {
  18.   echo "启动Docker服务..."
  19.   /etc/init.d/docker start
  20. }
  21.  
  22. # 监测Docker服务状态并自动启动
  23. while true; do
  24.   if check_docker_status; then
  25.     sleep 5  # 每5秒检测一次
  26.   else
  27.     start_docker
  28.     sleep 1  # 等待1秒后重新检测状态
  29.   fi
  30. done
将上述脚本保存为 docker_monitor.sh 文件,并通过 chmod +x docker_monitor.sh 命令赋予执行权限。然后,你可以将该脚本放置在适当的位置,例如 /root/docker_monitor.sh。
接下来,你可以使用 nohup 命令在后台运行该脚本,并将输出重定向到日志文件:
XML/HTML代码
  1. nohup /root/docker_monitor.sh > /root/docker_monitor.log &
这将启动脚本并将输出保存到 /root/docker_monitor.log 文件中。你可以根据实际情况更改日志文件的路径和名称。
可以将上面命令写到OpenWrt的启动项里面,开机自动启动,脚本将会监测Docker服务的状态,如果服务停止运行,它将自动启动Docker服务。随你这么折腾Docker服务总是可以自动启动,稳定得很。
 
在Alpine Linux系统下,编写一个Shell脚本来监测Docker服务并在进程结束时自动启动它。下面是一个简单的示例脚本,假设保存为monitor_docker.sh:
XML/HTML代码
  1. #!/bin/sh
  2.  
  3. # 设置要监测的Docker服务名称
  4. DOCKER_SERVICE_NAME="docker"
  5.  
  6. # 持续监测Docker服务
  7. while true; do
  8.   # 检查Docker服务进程是否在运行
  9.   if ! pgrep -x "$DOCKER_SERVICE_NAME" > /dev/null; then
  10.     echo "Docker服务未运行,正在尝试启动..."
  11.     # 启动Docker服务
  12.     rc-service "$DOCKER_SERVICE_NAME" start
  13.   fi
  14.   
  15.   # 等待一段时间再次检查 
  16.   sleep 5
  17. done
请注意,脚本中使用了rc-service命令来启动Docker服务。在Alpine Linux系统上,使用rc-service命令来管理服务是常见的做法。如果系统上有其他方法来启动Docker服务,请相应地修改脚本。
确保在保存脚本后赋予它执行权限:
chmod +x monitor_docker.sh
然后,运行脚本来开始监测Docker服务:
./monitor_docker.sh
这样,脚本将会在后台持续运行,并在检测到Docker服务进程结束时自动重新启动它。请注意,这只是一个简单的示例,如果需要更复杂的监测和处理逻辑,可以根据自己的需求进行修改。同时,也可以将脚本添加到系统启动中,以确保在系统重启后自动运行监测脚本。
 
在Debian系统下写一个自动监测Docker的脚本并实现Docker进程挂掉自动重启的过程,可以使用以下步骤:
创建脚本文件:首先打开一个文本编辑器,创建一个名为docker_monitor.sh的脚本文件。
编写脚本内容:将以下内容复制到docker_monitor.sh脚本中。
XML/HTML代码
  1. #!/bin/bash
  2.  
  3. # 检查Docker进程是否运行
  4. check_docker_process() {
  5.     docker_process_count=$(ps -ef | grep -v grep | grep -c "dockerd")
  6.     if [ "$docker_process_count" -eq 0 ]; then
  7.         return 1
  8.     else
  9.         return 0
  10.     fi
  11. }
  12.  
  13. # 启动Docker
  14. start_docker() {
  15.     service docker start
  16. }
  17.  
  18. # 主循环
  19. while true; do
  20.     if check_docker_process; then
  21.         echo "Docker is running."
  22.     else
  23.         echo "Docker is not running. Starting Docker..."
  24.         start_docker
  25.     fi
  26.     sleep 5  # 你可以根据需要调整检测的时间间隔
  27. done
添加执行权限:在终端中执行以下命令,为脚本文件添加执行权限。
chmod +x docker_monitor.sh
运行脚本:执行以下命令来运行脚本。
./docker_monitor.sh
现在,该脚本将自动监测Docker进程是否在运行,并在Docker进程挂掉时自动启动Docker。你可以根据需要调整脚本中的时间间隔和其他配置。注意:为了让脚本一直在后台运行,你可能需要将脚本添加到启动项或者使用工具如screen或nohup来运行它。它将在每次系统启动时自动运行,并在检测到Docker进程结束时自动启动Docker。请注意,此脚本中设置的检测间隔为5秒,可以根据需要进行调整。
注意:以上脚本Openwrt已经经过测试,其他系统的需要自测,不保证可以正常使用。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):