我有一个运行bash脚本的简单init.d脚本:
#! /bin/sh
### BEGIN INIT INFO
# Provides: registertool
# Required-Start: $network $local_fs $syslog $remote_fs networking
# Required-Stop: $network $local_fs $syslog $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts registration script
# Description: Starts the registration script
### END INIT INFO
do_start() {
cd $APP_DIR
./register.sh -v &
echo $! > "$PID_FILE"
log_action_msg "Registration started with pid $!"
}
case $1 in
start)
do_start
;;
stop)
log_end_msg 0
;;
restart|force-reload)
log_end_msg 0
;;
*)
echo $USAGE >&2
exit 1
;;
esac
在脚本内部,我将节点定义为NODE=$(which node)
并将应用程序作为$NODE myApp.js
运行。我已将脚本中的路径定义为
PATH="$PATH:/usr/local/bin:/usr/sbin:/sbin:/usr/bin/:/bin"
然而,我的节点甚至没有被调用!我究竟做错了什么?我还需要等待启动什么?
答案 0 :(得分:0)
NODE=$(which node)
将搜索$PATH
以查找可执行文件。如果您的路径尚未定义,则无法找到任何内容。尝试让您的脚本记录每一步,以便您可以看到它横向移动的位置。
./register.sh
将取决于当前目录是否具体。在系统启动期间,甚至可能无法定义cwd
。