"不能cd"在init.d中作为服务启动时

时间:2016-03-09 20:39:36

标签: node.js service forever cd init.d

我在init.d中运行了一个非常简单的脚本来永久启动节点服务器。它一直运作到最近,我找不到可以改变的东西。我在Debian 7上,最近没有做任何更新。 这是我的脚本(从某处复制,并保持简单,用于测试)

#!/bin/sh
#/etc/init.d/nodeup
. /lib/lsb/init-functions
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
. /home/pat/env
cd /var/www/mydir
FOREVER_ROOT=/var/log/forever/mydir
export FOREVER_ROOT
case "$1" in
   start)
    exec forever  start -m 10 -o $FOREVER_ROOT/output.log -e $FOREVER_ROOT/error.log ./bin/www  ./
    ;;
   stop)
    exec forever stop ./bin/www 
    ;;
   *)
    echo "Usage: service nodeup {start|stop}"
    exit 1
    ;;
    esac
  exit 0

问题在于我跑步时(开始或停止,效果相同)

 sudo service nodeup start 

我得到了

/etc/init.d/nodeup: 12: cd: can't cd to /var/www/mydir

如果我用sudo /etc/init.d/nodeup start运行脚本 它运行完美,没问题。

我无法理解发生了什么,或者我的机器上发生了什么变化。 知道我应该检查什么可能会给现在这种行为?或者在我的脚本中要改变什么以便它再次起作用? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

我将脚本的shell从sh更改为bash 它似乎使脚本更稳定