标签: watchdog

如何验证Windows服务是否正在运行

我在C#中运行了一个应用程序(在嵌入式XP上运行的2.0),它与作为Windows服务实现的"监视程序"进行通信.设备启动时,此服务通常需要一些时间才能启动.我想从我的代码中检查服务是否正在运行.我怎么能做到这一点?

c# windows-services watchdog

171
推荐指数
2
解决办法
16万
查看次数

仅当cron作业尚未运行时才运行它

所以我试图建立一个cron作业作为我创建的守护进程的监视器.如果守护进程出错并失败,我希望cron作业定期重启...我不确定这是多么可能,但我通读了几个cron教程,找不到任何可以做到的东西我我正在寻找......

我的守护进程是从shell脚本启动的,所以我真的只是在寻找一种方法来运行一个cron作业,如果该作业的上一次运行还没有运行的话.

我找到了这篇文章,它确实提供了我正在尝试使用锁文件做的解决方案,而不是我不确定是否有更好的方法来做...

谢谢你的帮助.

linux bash cron watchdog

117
推荐指数
9
解决办法
10万
查看次数

python watchdog监视文件的变化

伙计们,我需要查看日志文件以进行更改.在查看了stackoverflow问题之后,我看到人们推荐"看门狗".所以我正在尝试测试,并且不确定在文件更改时添加代码的位置:

#!/usr/bin/python
import time
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler

if __name__ == "__main__":
    event_handler = LoggingEventHandler()
    observer = Observer()
    observer.schedule(event_handler, path='.', recursive=False)
    observer.start()
    try:
        while True:
            time.sleep(1)
        else:
            print "got it"
    except KeyboardInterrupt:
        observer.stop()
    observer.join()
Run Code Online (Sandbox Code Playgroud)

如果文件已被添加/更改,我在哪里添加"得到它",在while循环中?

python monitoring file watchdog

50
推荐指数
2
解决办法
5万
查看次数

Linux nmi监视器如何工作?

现在我遇到了关于Linux NMI Watchdog的问题.我想使用Linux NMI看门狗来检测和恢复操作系统挂起.所以我将"nmi_watchdog = 1"添加到grub.cfg.然后检查/ proc/interrupt,每秒触发NMI.但是在我加载了一个带死锁的模块(双获取自旋锁)之后,系统完全挂起,什么也没发生(从不恐慌!).看起来nmi看门狗不起作用!

然后我读了Documantation/nmi_watchdog.txt,它说:

请注意,使用本地APIC时,它产生的NMI中断频率取决于系统负载.当地的APIC NMI监管机构缺乏更好的资源,使用" 周期无 ""事件.

什么是" 周期无恙 "事件?

它补充道

但是如果你的系统锁定了除"hlt"处理器指令之外的任何东西,监视器将很快触发,因为"循环无关"事件将在每个时钟滴答时发生...如果它锁定在"hlt",那么你就出局了好运 - 事件根本不会发生,看门狗不会触发.

似乎看门狗在处理器执行"hlt"指令时不会触发,然后我在" Intel 64和IA-32架构软件开发人员手册,Volumn 2A "中搜索"hlt ",它描述如下:

停止指令执行并将处理器置于HALT状态.启用的中断(包括NMI和SMI),调试异常,BINIT#信号,INIT#信号或RESET#信号将恢复 执行.

然后我输了......

我的问题是:

  • Linux nmi监视器如何工作?
  • 触发了nmi?

我的操作系统是Ubuntn 10.04 LTS,Linux-2.6.32.21,CPU Pentium 4双核3.20 GHz.

我没有阅读关于nmi看门狗的全部源代码(没时间),如果我无法理解nmi看门狗是如何工作的,我想用性能监控计数器中断处理器间中断(由APIC提供)来代替发送NMI nmi看门狗.

有人能帮助我吗?谢谢.

linux watchdog apic

26
推荐指数
2
解决办法
4万
查看次数

监视桌面应用程序的最佳方法是什么?

我需要一些方法来监视桌面应用程序并在它死亡时重新启动它.

最初我假设最好的方法是从Windows服务监视/重启进程,直到我发现Vista Windows服务不应该与桌面交互

我已经看到了几个处理这个问题的问题,但是我看到的每一个答案都涉及到某种被微软劝阻的黑客攻击,可能会在未来的操作系统更新中停止工作.

因此,Windows服务可能不再是一个选项.我可能只是创建一个不同的桌面/控制台应用程序来做到这一点,但这种方式失败了.

在您看来,哪种方式最优雅?

编辑:这既不是恶意软件也不是病毒.需要监控的应用程序是一个可以在嵌入式系统上运行的媒体播放器,即使我试图涵盖所有可能的崩溃情况,我也不会冒着因意外错误而崩溃的风险(不会发生) .这个看门狗只是一个安全措施,万一其他一切都出错了.此外,由于播放器将显示第三方Flash内容,因此增加的优势将是监视资源使用情况,并重新启动播放器,如果说,一些蹩脚的Flash电影开始泄漏内存.

编辑2:我忘了提到,我想要监视/重启的应用程序完全不需要在LocalSystem帐户上运行,也不需要任何管理权限.实际上,我更喜欢它使用当前记录的用户凭据运行.

.net c# windows-services desktop-application watchdog

25
推荐指数
3
解决办法
2万
查看次数

使用看门狗检测文件创建

我试图检测何时在目录中创建具有给定名称的文件.我正在这样做,感谢看门狗.正确检测到创建但我不知道如何在检测完成后正确终止应用程序.

我的代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging
import sys
import time

from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer

logging.basicConfig(level=logging.ERROR)

class MyEventHandler(FileSystemEventHandler):
    def __init__(self, observer, filename):
        self.observer = observer
        self.filename = filename

    def on_created(self, event):
        print "e=", event
        if not event.is_directory and event.src_path.endswith(self.filename):
            print "file created"
            self.observer.unschedule_all()
            self.observer.stop()

def main(argv=None):
    path = argv[1]
    filename = argv[2]
    observer = Observer()
    event_handler = MyEventHandler(observer, filename)
    observer.schedule(event_handler, path, recursive=False)
    observer.start()
    observer.join()
    return 0

if __name__ == "__main__": …
Run Code Online (Sandbox Code Playgroud)

python multithreading termination exit-code watchdog

20
推荐指数
1
解决办法
1万
查看次数

如何使用linux软件看门狗

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

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

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

linux watchdog linux-kernel busybox

18
推荐指数
3
解决办法
7万
查看次数

谁在Linux中刷新硬件看门狗?

我有一个运行2.6内核的处理器AT91SAM9G20.看门狗在引导级别启用并配置为16秒.看门狗模式寄存器只能配置一次.当代码在引导程序,引导程序或内核中挂起时,该板将重新启动.但是一旦内核出现,即使看门狗没有在任何应用程序中刷新,板也不会在16秒后重置,而是15分钟.

谁在刷新看门狗?

在我们的例子中,看门狗应该受到应用程序的影响,因此如果我们的应用程序挂起,则可以重置板.

这些是正在运行的进程:

1 root     init
2 root     [kthreadd]
3 root     [ksoftirqd/0]
4 root     [watchdog/0]
5 root     [events/0]
6 root     [khelper]
63 root     [kblockd/0]
72 root     [ksuspend_usbd]
78 root     [khubd]
85 root     [kmmcd]
107 root     [pdflush]
108 root     [pdflush]
109 root     [kswapd0]
110 root     [aio/0]
740 root     [mtdblockd]
828 root     [rpciod/0]
982 root     [jffs2_gcd_mtd10]
1003 root     /sbin/udevd -d
1145 daemon   portmap
1158 dbus     dbus-daemon --system
1178 root     /usr/sbin/ifplugd -i eth0 -fwI -u0 -d5 -l -q
1190 root     /usr/sbin/ifplugd -i …
Run Code Online (Sandbox Code Playgroud)

linux kernel arm watchdog

17
推荐指数
4
解决办法
2万
查看次数

Linux软件看门狗

我正在为Linux编写一个系统监视器,并希望包含一些看门狗功能.在内核中,即使/ dev/watchdog关闭,您也可以将监视程序配置为继续运行.换句话说,如果我的守护进程正常退出并关闭/ dev/watchdog,系统仍会在59秒后重新启动.这可能是也可能不是用户期望的行为.

我需要让我的守护进程知道这个设置,因为它会影响我处理SIGINT的方式.如果设置已启用,我的守护程序将需要(最好)在退出时启动有序关闭,或者(至少)警告用户系统将很快重启.

有没有人知道从用户空间获取此设置的方法?我没有在sysconf()中看到任何东西来获取值.同样,我需要能够判断软件看门狗是否已启用.

编辑:

Linux提供了一个非常简单的看门狗接口.进程可以打开/ dev/watchdog,一旦打开设备,内核将开始60秒倒计时重启,除非有一些数据写入该文件,在这种情况下时钟重新设置.

根据内核的配置方式,关闭该文件可能会也可能不会停止倒计时.从文档:

如果设备/ dev/watchdog正确关闭,则可以在不引起重启的情况下停止监视程序,除非在启用CONFIG_WATCHDOG_NOWAYOUT选项的情况下编译内核.

我需要能够判断是否在用户空间守护程序中设置了CONFIG_WATCHDOG_NOWAYOUT,以便我可以不同地处理所述守护程序的关闭.换句话说,如果该设置很高,那么简单:

# /etc/init.d/mydaemon stop
Run Code Online (Sandbox Code Playgroud)

...将在59秒内重启系统,因为没有任何内容正在写入/ dev/watchdog.因此,如果设置为高,我的SIGINT处理程序需要做其他事情(即至少警告用户).

我找不到从用户空间获取此设置的方法:(任何帮助表示赞赏.

c linux watchdog

14
推荐指数
1
解决办法
2万
查看次数

看门狗和matplotlib:当目录中有新文件时,处理图像并显示结果

我正在尝试创建一个简单的应用程序,其中

  1. 将图像推送到目录中(通过外部进程)

  2. Python看门狗触发器,图像由函数处理,结果显示在窗口中

作业连续运行,并且在图像进入目录时触发处理功能。结果的绘图窗口应仅用新结果更新,而不是关闭窗口然后重新绘图。

下面的代码不显示结果。绘图窗口保持空白,然后崩溃。如果除matplotlib之外的其他工具可以轻松完成此工作,那也很好。

# plt is matplotlib.pyplot

def process_and_plot(test_file):
    y, x = getresults(test_file) # function which returns results on image file

    y_pos = range(len(y))
    plt.figure(num=1,figsize=(20,10))
    plt.bar(y_pos, y, align='center')
    plt.xticks(y_pos, x)
    plt.show()

# to trigger the proess_and_plt function when a new file comes in directory 

class ExampleHandler(FileSystemEventHandler):
    def on_created(self, event): 
        print event.src_path
        process_and_plot(event.src_path)

event_handler = ExampleHandler() 
observer.schedule(event_handler, path='path/to/directory')
observer.start()
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()

observer.join()

Run Code Online (Sandbox Code Playgroud)

python file matplotlib watchdog

13
推荐指数
1
解决办法
205
查看次数