如何使用linux软件看门狗

Ver*_*ion 18 linux watchdog linux-kernel busybox

嗨,任何人都可以告诉我如何处理Linux中的软件看门狗.我有一个程序"SampleApplication",它持续运行,如果它意外挂起或关闭我需要重新启动它.

我正在谷歌上搜索这个,发现linux在/ dev/watchdog有看门狗,但不知道如何使用它.有人可以帮我举个例子.

我的问题是在哪里指定我的应用程序名称和延迟间隔以重新启动.由于我是linux的新手,请尽可能向我介绍样品.谢谢

小智 16

由于主持人现在忽略了后期改进,我将不得不单独发布

linux软件看门狗将重启机器,而不仅仅是重启你的进程.

嗯,这是不正确的,这是非常有可能重新启动,该系统是挂看门狗信号后,单个或多个进程 - 你甚至可以中止重启或做软重启,一个能够配置"测试"和"修复"-scripts/binaries",它们可以做任何你想做的事情.看门狗的Busybox的版本被剥离下来到近无用级...我想全世界都不知道为什么Busybox的开发者决定放弃主要的功能 - 现在,这将是最好避免busybox的根本 - >速度改进几乎不存在,尺寸减小不能弥补功能的巨大损失./ bin/bash相当小 - 如果大小重要并且你很高兴,可以使用标志"-Os"重新编译所有东西 - 一个开箱即用的监视器,它允许几乎所有人想要的东西.

哦,请不要创建自己的看门狗 - 这很可能会让你处理未处理的错误,并让你的生活变得糟糕.

  • 欢迎来到SO.您的编辑不会被忽略,但被视为无效,因为它们会改变原始海报所说的内容.评论将是通知他的适当方式.但是你需要先获得一些声誉,对不起. (3认同)
  • 但是,如果看门狗发出“系统”挂起的信号,则不会识别要重新启动的单个进程。这不是问题的答案 - 从另一个进程监视一个或多个进程是一个合法的目标,而不是通过 /dev/watchdog 实现的目标。这个问题甚至没有建议他创建自己的看门狗。它只是表明对 /dev/watchdog 设备和软件监视进程(或软件看门狗)之间差异的误解。 (3认同)

Zan*_*ynx 15

大多数Unix/Linux init程序将为您管理守护进程并重新启动它们.考虑将您的服务放入/etc/inittab.或者您可能正在使用Upstartsystemd.

所有这些程序都运行PID 1,监视和重新启动系统进程是他们的工作.

从您的Busybox标签我会假设您正在运行嵌入式系统.在那些,具有所有shell脚本的System V样式初始化脚本实在是太过分了.您应该将所有内容全部删除,并将其替换为/etc/inittab或upstart或systemd作业中的条目.


Jan*_*nne 8

用cron怎么样?设置一个每分钟运行一次的小型cron作业.检查您的应用程序是否已启动(使用ps),如果没有,请重新启动它.

制作一个像这样的小脚本:

#!/bin/bash
if [ ! "$(pidof myapp)" ] 
then
  /path/to/myapp &
fi
Run Code Online (Sandbox Code Playgroud)

您测试"myapp"是否在进程列表中."!" 扭转了考验.如果它不存在,则运行"myapp"."&"就是这样,它开始在后台.

将此添加到cron.根据您的系统和偏好,有几种方法可以做到这一点.经典的是使用crontab.有很多关于如何指定crontab行的文档,但你可能想要这样的东西:

* * * * * /path/to/the/script.sh > /dev/null
Run Code Online (Sandbox Code Playgroud)

这将在每一小时的每一分钟进行测试......你明白了.