问题标签 [watchdog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1045 浏览

python - Python 看门狗应用程序

呃……我保证我在网上彻底搜索过这个问题,但找不到令人满意的答案,所以>.<

我正在尝试为我的 python 应用程序创建一个“控制器”,我的意思是,它应该被执行然后生成服务器,等待获取退出信号,如果需要,重新启动脚本。

这段代码非常混乱,但这就是我到目前为止所提供的......它总是以无法识别的 exitSignal 1 返回,甚至不会产生服务器进程!有人可以给我一盏灯吗?

抱歉代码乱七八糟!(=^,^=)

0 投票
4 回答
8443 浏览

python - Python - 让父线程处理子线程异常

有没有办法让产生新线程的父级捕获产生的线程异常?下面是我想要完成的一个真实的基本示例。当引发异常时它应该停止计数,但我不知道如何捕捉它。异常线程安全吗?我希望能够使用该Subprocess模块,但我被困在使用 Python 2.3 并且不知道如何做到这一点。可能使用threading模块?

更新

我的原始代码有点误导。它真的在寻找更像这样的东西:

如果程序由于某种原因挂起,我正在尝试创建一个看门狗来终止 os.system 调用。

0 投票
1 回答
1005 浏览

erlang - Remote nodes keeping processes alive

Quis custodiet ipsos custodes? -- (Decimus Iunius Iuvenalis)

I have the following setup:

On one node ('one@erlang.enzo') a server process is running which has a watchdog running one another node ('two@erlang.enzo'). When the server starts up, it will start its watchdog on the remote node. When the server exits ungracefully, the watchdog starts the server again. When the watchdog exits, the server starts it again.

The server is started as part of the runlevel after the network is up.

The server also monitors the remote node and starts a watchdog as soon as it (i.e. the node) comes online. Now connection losses between server and watchdog can have two reasons: First, the network may go down; second, the node may crash or be killed.

My code seems to work, but I have the slight suspicion that the following is happening:

  • When the watchdog node is shut down (or killed or crashed) and is restarted, the server correctly restarts its watchdog.
  • But when the network fails and the watchdog node keeps running, the server starts a new watchdog when connection is reestablished and leaves one zombie watchdog behind.

My questions are:

  • (A) Do I create zombies?
  • (B) In the case of a network loss, how can the server check if the watchdog is still alive (and vice versa)?
  • (C) If B is possible, how can I reconnect the old server and the old watchdog?
  • (D) What other major (and minor) flaws do you, distinguished reader, spot in my setup?

EDIT: The die and kill_dog messages are for faking ungraceful exits and won't make it beyond debugging.

Here goes the code:



0 投票
3 回答
6131 浏览

java - 如何保护java中的方法(溢出等)

我必须用 Java 编写一个“看门狗”,以确保线程不会执行太长时间。初始化对象没问题,我创建了一个类,它调用 WatchDog 和带有 run() 方法中的反射的构造函数。

线程很容易停止,但我如何保护对象的正常方法?例如我调用一个对象的方法,这个方法执行一个无限循环,你会怎么做?

谢谢

0 投票
1 回答
1225 浏览

c# - 用于阻塞函数调用的看门狗

我有一个用于查询该传感器的硬件传感器的闭源 API。API 以 DLL 形式提供,我通过 C# 互操作使用。API 的功能是阻塞的。它们通常返回错误值,但在某些情况下它们不会返回。

我需要能够检测到这种情况并在这种情况下杀死被阻塞的线程。这如何在 C# 中完成?

它们被调用的线程是通过 BackgroundWorker 创建的。我正在寻找一个简单的看门狗来阻止函数调用,我可以在调用函数之前设置它并在我回来时重置。它应该坐在那里等我回来。如果我不这样做,它将终止线程,以便 1) API 再次被释放,并且我的应用程序的任何线程仍然没有挂起并在它最终返回时做任何事情2) 我可以采取其他恢复措施,例如重新初始化 API 以继续使用它。

0 投票
2 回答
5300 浏览

linux - 软锁定的原因?

当我们启用CONFIG_DETECT_SOFTLOCKUP检测软锁定时,它会创建一个名为的新任务,该任务khungtaskd将每 1 秒运行一次。如果khungtaskd未能在 'n' 秒内被调度,则内核将声明软锁定。

我的问题是阻止khungtaskd运行的原因是什么?我发现的一个是 - 试图在中断上下文中获取一个已经获得的自旋锁。导致软锁定的其他原因是什么?

0 投票
4 回答
13031 浏览

c - Linux在崩溃时自动重启应用程序 - 守护进程

我有一个运行嵌入式 linux 的系统,它连续运行至关重要。基本上,它是一个与传感器通信并将数据中继到数据库和 Web 客户端的过程。

如果发生崩溃,如何自动重启应用程序?

此外,还有几个线程在进行轮询(例如套接字和 uart 通信)。如何确保没有线程挂起或意外退出?是否有一个易于使用的线程友好的看门狗?

0 投票
2 回答
1562 浏览

python - 使用 vim 写入文件不会在 OS X 上触发文件更改事件

我正在使用看门狗来监视 OS X 上的 .less 文件更改事件。如果我使用 TextMate 或 Sublime Text 更改 .less 文件的内容,则会捕获修改事件。但是,如果我使用 vim 编辑内容,则不会触发文件修改事件(但会捕获使用 vim 创建的文件的文件创建事件)。我已经看到了 FSEvents 和 kqueue 的相同行为(我对这两者的了解几乎为零)。

我想知道有人可以解释这种行为吗?

0 投票
1 回答
1146 浏览

ios - 由于 iPhone 应用程序中的 com.apple.locationd.registration.xpcq,启动时超时 (0x8badf00d)

在应用程序启动期间,我通过 iTunes 遇到了奇怪的超时崩溃。这是堆栈跟踪。似乎与位置服务有关(是的,我确实要求提供用户的位置)。有没有人有这样的崩溃经验?

0 投票
2 回答
6073 浏览

sockets - 看门狗监控 UNIX 域套接字,根据特定内容触发事件

我在一个嵌入式平台(mipsel 架构,Linux 2.6 内核)上,我需要监视两个闭源进程(路由器固件)之间的 IPC,以便对某个事件(由于 DSL 重新连接而导致的动态 IP 更改)做出反应。到目前为止,我通过strace发现的是,每当 IP 更改时,DSL 守护程序都会将一条特殊消息写入绑定到特定文件名的 UNIX 域套接字中。该消息被另一个守护进程使用。

现在这是我的要求:我想监视通过该特定 UNIX 域套接字的数据流,并在检测到特定消息时触发事件(调用 shell 脚本)。我尝试使用 inotify 监视文件名,但它不适用于套接字文件。我知道我可以一直运行 strace,过滤它的输出并对过滤后的日志文件中的更改做出反应,但这将是一个过于繁重的解决方案,因为 strace 确实会减慢系统速度。我也知道我可以通过 cron 轮询 IP 地址更改,但我想要一个看门狗,而不是轮询解决方案。我很想知道是否有一种工具可以专门监视 UNIX 域套接字并对以预定义方向流过的特定消息作出反应。我想象类似于 inotifywait 的东西,即该工具应该等待某个事件,然后退出,

是否有任何现有的 Linux 工具能够做到这一点?或者是否有一些简单的 C 代码用于我可以在我的平台上编译的独立二进制文件(uClibc,而不是 glibc)?我不是 C 专家,但能够运行 makefile。使用 shell 中的二进制文件没问题,我对 shell 编程有足够的了解。