我需要在Ubuntu LTS上编写一个看门狗,用于第三方网络文件传输java程序,该程序在每4至4MB/s持续网络传输每40至50分钟就会死掉。用Python编写看门狗
我无法修改该java程序,但它通过新贵产生。
我现在的看门狗是一个繁忙的等待:
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,我想知道是否有解决这个更好的方法:
有通知/事件处理而不是轮询。 请注意,我不是在暗示进程终止时的任何通知/事件被触发,但在问,如果操作系统能够确定Java程序已经去世
修改的滋生Java程序的新贵脚本,以便在重启如果这个过程停滞了呢?
更好的解决方案? 也许类似Python API library and shell utilities to monitor file system events,但对于Linux进程