首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CentOS中nodejs守护进程的启动脚本不起作用(启动时崩溃)

CentOS中nodejs守护进程的启动脚本不起作用(启动时崩溃)
EN

Stack Overflow用户
提问于 2012-10-06 01:23:26
回答 2查看 2.4K关注 0票数 2

在我的CentOS服务器的/etc/init/目录中的.conf文件中有以下内容:

代码语言:javascript
运行
复制
#!upstart
description "shortnr server for fmc.io"
author      "Felix Milea-Ciobanu"

start on startup
stop on shutdown

respawn
respawn limit 10 30

script
    export HOME="/root"
    exec /usr/local/bin/node /var/www/fmc.io/nodejs/app.js >> /var/www/fmc.io/logs/shortnr.upstart.log 2>&1
end script

pre-start script
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/www/fmc.io/logs/shortnr.upstart.log
end script

pre-stop script
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/www/fmc.io/logs/shortnr.upstart.log
end script

这是一个非常简单和直接的初创脚本。我将此服务命名为shortnr,以脚本启动的nodejs软件命名。

在命令行中,如果我输入start shortnr,就会得到类似于shortnr start/running, process 28350的内容。

但是,我似乎无法访问nodejs服务器;如果我在命令外壳中执行ps aux | grep shortnr,什么也不会出现。

如果我在运行start之后执行stop shortnr,我会得到stop: Unknown instance:,这意味着原始服务从未启动。

我在Upstart脚本中设置的日志文件如下所示:

代码语言:javascript
运行
复制
[2012-10-05T17:00:17.174Z] (sys) Starting
[2012-10-05T17:00:17.181Z] (sys) Starting
[2012-10-05T17:00:17.190Z] (sys) Starting
[2012-10-05T17:00:17.197Z] (sys) Starting
[2012-10-05T17:00:17.204Z] (sys) Starting

基本上,当我发出start命令时,脚本每秒尝试启动多次,这意味着服务必须在启动或其他什么地方崩溃,并试图重新生成?

但是,如果我在exec之后复制命令并将其粘贴到shell提示符中,那么nodejs脚本将启动并正常运行。

所以这意味着我的Upstart脚本一定有问题。

如果我尝试使用initctl命令启动/停止服务,则得到相同的结果。

我运行的是CentOS 6.3和Upstart 0.6.5

有谁知道是什么导致了这个问题,或者如何修复我的脚本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-11 03:03:55

虽然我找不到问题的答案,但我最终使用的是永远:https://github.com/nodejitsu/forever-monitor

票数 0
EN

Stack Overflow用户

发布于 2013-05-10 00:09:14

我在CentOS 6.3,Upstart 0.6.5和Node.Js 0.10.5上也遇到了类似的问题。我特别升级了Node,这样我就可以使用守护程序模块,并能够将守护的Node应用程序置于Upstart控制之下。

下面是我的/etc/init/job-worker.conf:

代码语言:javascript
运行
复制
description "job-worker under Upstart/init control"

start on job-worker-start-event
stop on job-worker-stop-event

expect daemon

script
  #setuid myuser
  exec /root/BasicJobWorker/bin/basic-job-worker
  #sleep 5
end script

respawn
respawn limit 10 5 

下面是我的basic-job-worker脚本:

代码语言:javascript
运行
复制
\#!/usr/bin/env node

// this code is run twice
// see implementation notes below
console.log(process.pid);

// after this point, we are a daemon
require('daemon')();

// different pid because we are now forked
// original parent has exited
console.log(process.pid);

var BasicJobWorker = require('../lib/basic-job-worker.js');

new BasicJobWorker().boot();

我尝试过使用"expect fork“、"expect daemon”以及no expect。在所有情况下,作业重新生成的速度都太快,最终都会停止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12751144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档