新贵服务没有开始?

时间:2015-03-25 03:47:35

标签: ubuntu upstart

我从源代码构建了nginx(我需要Ubuntu发布的版本中没有的功能),并且需要创建SysV类型的服务脚本或Upstart脚本。我走了Upstart路线,认为这会更容易:

# nginx - HTTP server.

description "nginx"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
expect fork

env LD_LIBRARY_PATH=/opt/luajit-2.0/lib
exec /opt/nginx-1.5.12/sbin/nginx

这不起作用。 nginx几乎立即死亡,奇怪的是,很多其他服务:

[ 2466.050214] init: nginx-1.5.12 main process (8615) terminated with status 2
[ 2466.050224] init: nginx-1.5.12 main process ended, respawning
[ 2581.872143] init: upstart-udev-bridge main process (398) terminated with status 1
[ 2581.872154] init: upstart-udev-bridge main process ended, respawning
[ 2581.872288] init: upstart-socket-bridge main process (536) terminated with status 1
[ 2581.872296] init: upstart-socket-bridge main process ended, respawning
[ 2581.872388] init: upstart-file-bridge main process (937) terminated with status 1
[ 2581.872395] init: upstart-file-bridge main process ended, respawning

尽管有“respawning”,但nginx 会被Upstart重生(我可以说,当服务消亡时,Upstart会记录它正在重生)它然后继续什么都不做)。 Upstart似乎认为该服务正在运行(service nginx-1.5.12 start会出错),所以要实际启动它,我需要先stop,然后然后 start它。否则,它就开始了。

我尝试在exec行添加一些调试,

exec (cd /tmp && mkdir -p nginx-logs && chmod 777 nginx-logs) && /opt/nginx-1.5.12/sbin/nginx > /tmp/nginx-logs/stdout.log 2>/tmp/nginx-logs/stderr.log

无法启动,但更有趣的是,永远不会创建/tmp/nginx-logs。同样,运行service … stop后跟service … start工作正常,此时创建nginx-logs。这似乎表明该行有效。这是以root身份运行的。 /tmp是世界可写的。目录是绝对的。据我所知,Upstart实际上并没有执行exec行。

在所有情况下,exec行都可以手动运行。手动重新启动服务工作正常。这是怎么回事?

0 个答案:

没有答案