我正在尝试设置 upstart 脚本来启动/停止我的 node.js 应用程序。
这是我的 upstart 脚本:
#!upstart
description "node.js server"
author "marduk"
start on filesystem
stop on runlevel [!2345]
oom never
expect daemon
respawn
respawn limit 10 60
script
export HOME="/home/domains/srg-internal-dev"
echo $$ > /var/run/node-srg-internal-dev.pid
exec sudo -u www-data /usr/bin/node /home/domains/srg-internal-dev/api/server.js >> /home/domains/srg-internal-dev/node.log
2>&1
end script
pre-start script
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /home/domains/srg-internal-dev/node.log
end script
pre-stop script
rm /var/run/node-srg-internal-dev.pid
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /home/domains/srg-internal-dev/node.log
end script
我检查了这个脚本文件:
$ init-checkconf /etc/init.d/nodesrg.conf
文件 /etc/init.d/nodesrg.conf: 语法正确
但是当我尝试启动节点时,我得到:
$ start nodesrg
start: Unknown job: nodesrg
我做错了什么?;)
答案1
尝试将 nodesrg.conf 移至/etc/init
,而不是 /etc/init.d。Init.d 是 SYSV 样式脚本所在的位置,upstart 配置属于前者。
用于initctl list
验证移动文件后它是否显示为 upstart 服务。
如果没有,您可以使用initctl reload-configuration
并重试。