Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何为非web前端流程设置监视?_Ruby On Rails_Linux_Process - Fatal编程技术网

Ruby on rails 如何为非web前端流程设置监视?

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

我有一个工作进程,它在没有web前端的服务器上运行。设置it监控的最佳方法是什么?它最近死了3天,我不知道这有几种方法。一个简单的选择是运行cron作业,检查流程日志上的时间戳(当然,还要确保流程定期记录一些内容)。

滚动您自己的转世作业。让您的后台进程获取其PID,然后在启动时将其写入特定的预定义位置。让另一个进程(或者cron)读取该PID,然后检查符号链接
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秒甚至更短的时间间隔工作一次