Ruby on rails 如何为非web前端流程设置监视?
我有一个工作进程,它在没有web前端的服务器上运行。设置it监控的最佳方法是什么?它最近死了3天,我不知道这有几种方法。一个简单的选择是运行cron作业,检查流程日志上的时间戳(当然,还要确保流程定期记录一些内容)。滚动您自己的转世作业。让您的后台进程获取其PID,然后在启动时将其写入特定的预定义位置。让另一个进程(或者cron)读取该PID,然后检查符号链接Ruby on rails 如何为非web前端流程设置监视?,ruby-on-rails,linux,process,Ruby On Rails,Linux,Process,我有一个工作进程,它在没有web前端的服务器上运行。设置it监控的最佳方法是什么?它最近死了3天,我不知道这有几种方法。一个简单的选择是运行cron作业,检查流程日志上的时间戳(当然,还要确保流程定期记录一些内容)。滚动您自己的转世作业。让您的后台进程获取其PID,然后在启动时将其写入特定的预定义位置。让另一个进程(或者cron)读取该PID,然后检查符号链接proc/{PID}/exe。如果该链接不存在或不是您的流程,则需要重新启动该链接 使用PHP,可以使用posix_getpid()获取P
proc/{PID}/exe
。如果该链接不存在或不是您的流程,则需要重新启动该链接
使用PHP,可以使用posix_getpid()获取PID。然后/将其写入文件。用于读取符号链接(注意将FALSE
作为返回值)
下面是一个简单的符号链接工作原理示例:
tpost@tpost-desktop:~$ echo $$
13737
tpost@tpost-desktop:~$ readlink /proc/13737/exe
/bin/bash
因此,一旦您知道进程开始时的PID,您可以检查它是否仍然存在,并且Linux没有回收PID(您只看到在运行了很长时间的系统上回收PID,但确实发生了)
这是一个非常非常便宜的操作,可以让它每分钟、30秒甚至更短的时间间隔工作一次