注入环境变量,不然找不到 node 或者 -g 安装的包。上面已经提过,地址根据安装方法不同不一致,区别在于有没有 local 这一级,自己根据实际情况定夺。
继续,start 命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
case"$1"in start) whileread Name Main Path do if [ $2 ] then if [ "$2" != "$Name" ] then continue fi fi if [ -f${PID/xxx/$Name} ] then echo-e"\033[0;33mWarn:\033[0m \033[0;32m$Name\033[0m is already running well." continue fi forever start -wal ${LOG/xxx/$Name} -m 0 --watchDirectory $Path --pidFile ${PID/xxx/$Name}$Path/$Main done < $DEAMON ;;
详细说明一下:
“Name Main Path” 对应配置文件中的内容格式,
start 后不跟参数,则启动所有配置项;跟上配置项 Name 做参数则仅启动该项
已经启动的返回友好提示信息
关于 forever 的说明:
-w 监视文件的变更,一旦有变更,forever 会重启关联 server
-a 声明追加内容到已有日志文件 (没有 -a 重启时会直接报错并中断…………谁会每次重新启动来关心 log 日志?!为什么 -a 不是默认值!!!)
-l 指定日志文件地址
-m 最大运行次数
—watchDirectory 监视文件的目录 path
—pidFile 字面意思
list 命令用来查看正在运行的进程,其他命令顾名思义了。
继续,stop 命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
stop) if [[ `forever list` =~ 'No' ]] then forever list else echo'======================================' forever list echo'======================================' echo-e"Enter the number of uid[\033[0;32mX\033[0m] to stop." printf'uid: ' read answer echo-e"\033[0;32mStopping\033[0m $answer..." echo'======================================' forever stop $answer || echo'Wrong entry!\rExit!\rRetry.' echo'======================================' echo-e"\033[0;32mDone!\033[0m" fi ;;
reload|restart) if [ $2 ] then whileread Name Main Path do if [ "$Name" = "$2" ] then forever restart -wal ${LOG/xxx/$Name} -m 0 --watchDirectory $Path --pidFile ${PID/xxx/$Name}$Path/$Main fi done < $DEAMON else echo-e"\033[0;31merror\033[0m: need second param like this: $1 name_of_the_app" fi ;;