谁能告诉我如何在Linux中处理软件看门狗?
我有一个持续运行的程序SampleApplication
,如果它意外挂起或关闭,我需要重新启动它。
我在谷歌上搜索了一下,发现Linux在/dev/watchdog
上有watchdog,但不知道如何使用它。有人能帮我举个例子吗?
我的问题是在哪里指定要重新启动的应用程序名称和延迟间隔?
发布于 2012-01-31 10:01:57
大多数Unix/Linux init
程序将为您管理守护进程并重新启动它们。考虑将您的服务放在/etc/inittab
中。或者,您可能正在使用Upstart
或systemd
。
所有这些程序都以PID 1
身份运行,它们的工作是监视和重新启动系统进程。
从你的Busybox标签,我会假设你正在运行一个嵌入式系统。在这些方面,System V风格的初始化脚本及其所有的shell脚本实在是言过其实。您可能应该删除所有这些内容,并将其替换为/etc/inittab
或upstart或systemd作业中的条目。
发布于 2012-02-23 17:12:24
linux软件监视器将重新启动机器,而不仅仅是重新启动您的进程。
这根本不是真的,在看门狗发出系统挂起的信号后,很有可能重新启动单个或多个进程-您甚至可以中止重新启动或进行软重新启动,您可以配置“测试”和“修复”-scripts/二进制文件,它们可以做您想让它们做的任何事情。watchdog的busybox版本被剥离到一个几乎不可用的级别...我猜世界永远不会知道为什么busybox-devs决定放弃主要的功能--现在,最好是完全避免busybox -->速度的提高几乎是不存在的,尺寸的减少并不能弥补功能的巨大损失。/bin/bash相当小-如果大小很重要,可以使用"-Os“标志重新编译所有内容--一个开箱即用的watchdog,它允许人们想要的几乎所有东西。
哦,请不要创建自己的看门狗-那很可能会给你留下未处理的错误,并让你的生活有一天变得糟糕。
发布于 2012-01-31 08:40:50
使用cron怎么样?设置一个每分钟运行一次的小型cron作业。检查应用程序是否已启动(使用ps),如果未启动,请重新启动它。
像这样做一个小脚本:
#!/bin/bash
if [ ! "$(pidof myapp)" ]
then
/path/to/myapp &
fi
测试"myapp“是否在进程列表中。"!“反转测试。如果不在那里,它会运行"myapp“。"&“只是为了让它在后台开始。
将此代码添加到cron。根据您的系统和偏好,有几种方法可以做到这一点。经典的方法是使用crontab。有很多关于如何指定crontab行的文档,但您可能需要这样的内容:
* * * * * /path/to/the/script.sh > /dev/null
这将在每个…的每小时的每一分钟运行您的测试你明白了吧。
https://stackoverflow.com/questions/9072879
复制相似问题