【发布时间】:2011-09-23 21:53:26
【问题描述】:
我有一个希望在 Ubuntu 10.10 上连续运行的 R 脚本。我正在尝试设置 Monit 以确保它不会出现故障。当脚本启动时,它会创建一个 pid 文件,其中包含以下行:
pid <- max(system("pgrep -x R", intern = TRUE))
write(pid, "/var/run/myscript.pid")
然后我用这些线设置了Monit:
check process myscript with pidfile /var/run/myscript.pid
start program = "/usr/bin/R --vanilla < /home/me/myscript.R > /home/me/myscript.out 2>&1"
Monit 启动正常,但是当我终止 R 进程时,R 进程没有再次启动。我显然做错了什么。它在启动进程的语法中吗?我注意到文档说 Monit 首先尝试停止程序,但我不知道任何用于停止 R 进程的命令。
也许相关的是,启动程序的上述行在 root 用户的 crontab 中时有效,但在我的用户 crontab 中启动时无效。
非常感谢任何指导。
【问题讨论】:
-
您确定正在创建 pid 文件吗?您是否在详细模式下运行了 monit?您是否能够使用 monit 停止、启动和重新启动进程(使用 monit stop/start/restart myscript)? monit 用户是否可以读取 pid 文件?我认为在详细模式下运行 monit 会很有用。
-
谢谢。这些 cmets 帮助我解决了一些问题。由于其他地方出现错误,Monit 没有运行。我实际上有两个脚本,其中一个以 monit start myscript -v 开头并创建了 pidfile,但另一个没有并且不创建 pidfile。最初,我在启动命令中输入了一个错误,而那个命令没有运行。现在我怀疑错误被缓存在某个地方,因为即使我纠正了它也不会启动。
-
是的。当我遇到监视器问题时,十分之九,我发现这不是监视器问题:) 好东西,很高兴它已修复。
标签: r ubuntu-10.10 monit