3

我创建了一个新贵脚本以守护 juggernaut(一个 node.js 应用程序)新贵脚本如下

description "juggernaut server"
author      "panojsee"

start on startup
stop on shutdown

script
    # We found $HOME is needed. Without it, we ran into problems
    #export HOME="/home/ubuntu/src/juggernaut"
    chdir /home/ubuntu/src/juggernaut
    exec sudo /usr/bin/node server.js 2>&1 >> /var/log/node.log
end script

如您所见,我想用 sudo 运行节点(这样我就可以使用 Flash 套接字)。我的监控脚本如下:

设置日志文件 /var/log/monit.log

check host juggernaut with address 127.0.0.1
    start program = "/sbin/start juggernaut"
    stop program  = "/sbin/stop juggernaut"
    if failed port 8080 protocol HTTP
        request /
        with timeout 10 seconds
        then restart

Monit 不允许我启动程序 =“ sudo /sbin/start juggernaut”一旦我杀死 juggernaut(节点)然后 monit 尝试重新启动它,但会因以下消息而死。

[UTC Feb  3 22:48:25] error    : 'nodejs' failed, cannot open a connection to INET[127.0.0.1:8080] via TCP
[UTC Feb  3 22:48:25] info     : 'nodejs' trying to restart
[UTC Feb  3 22:48:25] info     : 'nodejs' stop: sudo
[UTC Feb  3 22:48:25] error    : Error: Could not execute sudo
[UTC Feb  3 22:48:25] info     : 'nodejs' start: sudo

任何线索如何告诉 monit 执行 sudo 命令?

4

3 回答 3

3

我认为您应该使用专用用户运行nodeJS,然后从启动脚本中删除“exec sudo”,并直接告诉monit您要使用哪个用户。

启动程序 = "/sbin/start juggernaut" 作为 uid 用户 ID

于 2011-04-13T16:33:13.387 回答
2

只需使用 sudo 启动 Monit,当然还要将 monit 添加到 sudoers

于 2011-03-02T08:13:33.800 回答
1

检查以什么用户身份运行。该用户是否配置为运行 sudo?还要检查 sudo 是否报告了任何错误(可能在 中/var/log/messages)。

我发现这个答案对于找出监控行为非常有帮助。

于 2011-02-04T07:56:29.617 回答