linux – BASH脚本启动node.js套接字服务器作为服务
发布时间:2020-12-14 00:52:24 所属栏目:Linux 来源:网络整理
导读:基本上我想要完成的是,某种脚本或方法让我启动node.js套接字服务器脚本,作为服务. 这样做是为了让我不必在SSH中物理运行’node server.js’并且必须打开它. 任何帮助,将不胜感激. 谢谢斯科特 解决方法 除了永远之外,我没有看到任何想要使用其他东西的罪犯.在
基本上我想要完成的是,某种脚本或方法让我启动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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |