基本上我想要完成的是,某种脚本或方法让我启动node.js套接字服务器脚本,作为服务.
这样做是为了让我不必在SSH中物理运行’node server.js’并且必须打开它.
任何帮助,将不胜感激.
谢谢斯科特
解决方法:
除了永远之外,我没有看到任何想要使用其他东西的罪犯.在我的项目中,我也避免使用这种工具,而更多地依赖于系统功能.因为我也试图避免以root身份运行我的应用程序,所以我不能使用SystemV或Upstart.
这里有强大的shell脚本!我创建了几个简单执行任务的bash脚本,例如具有启动,停止,重启和查询状态能力的进程看门狗.
检查此代码.随意修改它.要使用它 – 将命令放在COMMAND参数中.并执行./path_to_script.sh -start.这将创建看门狗进程,它将启动您的节点进程并观察它是否死亡,如果是,它将重新启动它.这是非常不理想的,所以如果有人有什么要修复,添加,删除这里,随时在下面评论.
#!/bin/bash
CURRENT_PATH=$(pwd)
LOGFOLDER=$CURRENT_PATH"/logs/"
PIDFOLDER=$CURRENT_PATH"/pid/"
#PID file where the this script process ID is stored
WATCHDOGPIDFILE=$PIDFOLDER"watchdog-admin.pid"
#PID file where the node process ID is stored
NODEPIDFILE=$PIDFOLDER"node-admin.pid"
#Watchdog process error log file
WATCHDOGLOGFILE=$LOGFOLDER"admin-watchdog-error.log"
#Node process error log file
NODELOGFILE=$LOGFOLDER"admin-error.log"
#Command to be executed on daemon start
COMMAND="node ./admin/app.js 1> /dev/null 2>> $NODELOGFILE"
ARG_1=$1
start() {
if [ -e $NODEPIDFILE ]; then
PID=$(cat $NODEPIDFILE)
if [ $(ps -o pid | grep $PID) ]; then
return;
else
touch $NODEPIDFILE
nohup $COMMAND &
echo $! > $NODEPIDFILE
fi
else
touch $NODEPIDFILE
nohup $COMMAND &
echo $! > $NODEPIDFILE
fi
}
stop() {
if [ -e $NODEPIDFILE ]; then
PID=$(cat $NODEPIDFILE)
if [ $(ps -o pid | grep $PID) ]; then
kill -9 $PID
fi
rm $NODEPIDFILE
fi
}
stopdaemon() {
stop
rm $WATCHDOGPIDFILE
exit 0
}
log() {
echo $1 >> $WATCHDOGLOGFILE
}
keep_alive() {
if [ -e $NODEPIDFILE ]; then
PID=$(cat $NODEPIDFILE)
if [ $(ps -o pid | grep $PID) ]; then
return;
else
log "Jim, he is dead!! Trying ressurection spell..."
start
fi
else
start
fi
}
case x${ARG_1} in
x-start )
echo "Starting daemon watchdog"
nohup "$0" -daemon &> /dev/null &
;;
x-daemon )
if [ -e $WATCHDOGPIDFILE ]; then
PID=$(cat $WATCHDOGPIDFILE)
if [ $(ps -o pid | grep $PID) ]; then
exit 0;
fi
fi
touch $WATCHDOGPIDFILE
echo $$> $WATCHDOGPIDFILE
#trap the interruption or kill signal
trap stopdaemon INT SIGINT TERM SIGTERM
start
while true; do
keep_alive
wait
sleep 1
done
;;
x-stop )
echo "Stopping daemon watchdog"
PID=$(cat $WATCHDOGPIDFILE)
kill $PID
;;
x-status )
#check if process is running and PID file exists, and report it back
;;
x )
echo "Usage {start|stop|status}"
esac
exit 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。