process - 用Python编写一个看门狗

标签 process signals monitoring watchdog

我需要在 Ubuntu LTS 上为第 3 方网络文件传输 java 程序编写一个看门狗,该程序每 40 - 50 分钟的持续网络传输 @4MB/s 就会终止。

我无法修改该 java 程序,但它是通过 upstart 生成的。

我当前的看门狗正忙于等待:

while monitoring_enabled:
    begin_time = now()
    # query ps and /proc to see if it's there
    end_time = now()
    diff_time = end_time - begin_time
    if not diff_time > sleep_time:
        sleep(sleep_time - diff_time)

由于“忙等待很糟糕”,并且这会占用大约 10% 的 CPU,我想知道是否有更好的方法来解决这个问题:

  1. 使用通知/事件处理而不是轮询。 请注意,我并不是暗示进程终止时会触发任何通知/事件,而是询问操作系统是否可以确定 java 程序已死亡

  2. 修改生成 java 程序的 upstart 脚本,以便在进程出现故障时重新启动它?

  3. 更好的解决方案? 也许像 Python API library and shell utilities to monitor file system events ,但对于 Linux 进程

最佳答案

Supervisor - Python、生成和控制进程、事件通知、xml-rpc api、良好的文档、良好的评论

关于process - 用Python编写一个看门狗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072928/

相关文章:

使用 vbscript 检查 Windows 更新

c# - mysqldump.exe 需要密码,即使它在参数中给出

c - 使用 ctrl-c 的信号处理程序 - 需要无限循环的帮助

installation - RegSetInfoKey 操作有什么作用?

php在后台执行()函数

java - 如何使用java检查正在外部更新的文件的内容?

c - Unix 表示奇怪的行为。 ( child 多次退出)

c# - SignalR 在 2020 年是否相关?

python - 监控多个 Pylons 应用程序

java 7目录监控问题