Linux中的应用程序运行状况监视

时间:2018-08-20 12:26:03

标签: embedded-linux health-monitoring

Systemd将创建一个进程,并在启动时依次创建许多其他需要在我的嵌入式设备上运行的应用程序/进程。

  1. 有什么方法可以在所有应用程序中添加一段代码,以便systemd交换“心跳”并知道某个应用程序是否已挂起
  2. 有一些我可以参考和理解的例子吗?

1 个答案:

答案 0 :(得分:0)

答案是see this superuser post

  

是;但请先修复您的越野车程序,然后再使用systemd。   MariusMatutiae是非常正确的。您的程序有问题。   陷入僵局。摆弄systemd并不是答案。充其量是   分心。修复程序,使其不会损坏。指挥你的   在正确的事情上充满活力。

     

也就是说,其他人会因为这个问题而来这里   标题,而不是适当的问题。为了他们的利益,这是   标题的答案,忽略适当的问题:

     

是的,systemd可以监视恶魔并自动重启恶魔   别说话了但是,不仅有任何老妖怪。正如MVP所说,   无法知道恶魔已经挂了(在这个宇宙中,   停止问题是不确定的,至少)。既没有系统也没有任何   其他计算机程序将永远能够从头推断出   扔给他们的一些随机程序已陷入僵局或陷入   无限循环或其他任何原因。你会得到的最好的是   检测到恶魔没有执行常规的“心跳”   在规定的时间内完成操作。

     

利用Systemd的看门狗功能的恶魔,   因此,必须写出特定于系统的协议,   sd_notify协议。这会使dæmon代码有点复杂。它的   更加复杂,因为恶魔应该正确地检查   是否在启用了看门狗功能的情况下调用了它们,例如   好吧。

     

使用该协议使用Systemd的看门狗的恶魔   能力……

     
      
  • …必须检查WATCHDOG_USEC环境变量;
  •   
  • …必须在其整个生命周期中连续且频繁地调用sd_notify(),并设置WATCHDOG = 1选项,间隔约为WATCHDOG_USEC / 2(“ USEC”代表微秒);
  •   
  • …必须在其单位文件中设置Type=notify
  •   
  • …应在其单位文件中设置NotifyAccess=main(或= all);
  •   
  • …必须在其单位文件中设置WatchdogSec=seconds
  •   
  • …必须与libsystemd-daemon.so链接。如果您想了解编码的详细信息,请在阅读手册后确保进入正确的StackExchange。这是超级用户。 StackOverflow是over there
  •   
     

进一步阅读

     
      
  • Lennart Poettering。 2011-04-12。 Watchdogs。 Freedesktop.org。
  •