Linux下使用Forever守护NodeJS进程

NodeJS Forever 学习
usage: forever [action] [options] SCRIPT [script-options]
Monitors the script specified in the current process or as a daemon
# 在当前或者守护进程中监控指定的脚本
actions:
start Start SCRIPT as a daemon
# 启动一个脚本做为守护进程
stop Stop the daemon SCRIPT by Id|Uid|Pid|Index|Script
# 通过 Id | Uid | Pid | Index | Script 来停止一个守护脚本进程
stopall Stop all running forever scripts
# 停止所有的 forever 脚本
restart Restart the daemon SCRIPT
# 重启一个守护脚本进程
restartall Restart all running forever scripts
# 重启所有运行中的 forever 脚本
list List all running forever scripts
# 列出所有运行中的 forever 脚本
config Lists all forever user configuration
# 列出所有 forever 使用的配置
set <key> <val> Sets the specified forever config <key>
# 设置指定的配置项
clear <key> Clears the specified forever config <key>
# 清除指定的配置项
logs Lists log files for all forever processes
# 列出所有forever进程使用的日志文件
logs <script|index> Tails the logs for <script|index>
# 监控日志
columns add <col> Adds the specified column to the output in `forever list`
# forever list 输出添加指定的列
columns rm <col> Removed the specified column from the output in `forever list`
# forever list 输出删除指定的列
columns set <cols> Set all columns for the output in `forever list`
# forever list 输出设置所有列
columns reset Resets all columns to defaults for the output in `forever list`
# forever list 输出列重置为默认值
cleanlogs [CAREFUL] Deletes all historical forever log files
# 删除所有的日志文件
options:
-m MAX Only run the specified script MAX times
# 脚本运行的最大时间
-l LOGFILE Logs the forever output to LOGFILE
# 指定输出的日志文件
-o OUTFILE Logs stdout from child script to OUTFILE
# 指定子脚本的输出日志
-e ERRFILE Logs stderr from child script to ERRFILE
# 指定子脚本的错误日志
-p PATH Base path for all forever related files (pid files, etc.)
# 所有forever 脚本的 BaseDir
-c COMMAND COMMAND to execute (defaults to node)
# 执行的命令,默认为 node
-a, --append Append logs
# 追加形式的日志记录
-f, --fifo Stream logs to stdout
# 日志流输出的标准输出
-n, --number Number of log lines to print
# 打印指定的日志行
--pidFile The pid file
# pid 文件
--uid Process uid, useful as a namespace for processes (must wrap in a string)
e.g. forever start --uid "production" app.js
forever stop production
# 进程UID【即:别名】,用做进程的空间名,必需是字符串
--sourceDir The source directory for which SCRIPT is relative to
# 相对于脚本的源码目录
--workingDir The working directory in which SCRIPT will execute
# 脚本执行的目录
--minUptime Minimum uptime (millis) for a script to not be considered "spinning"
# 最小运行时间,防止脚本被认为是异常脚本
--spinSleepTime Time to wait (millis) between launches of a spinning script.
# 重启脚本之间的等待时间
--colors --no-colors will disable output coloring
# 高亮输出
--plain alias of --no-colors
# 不高亮输出的别名
-d, --debug Forces forever to log debug output
# 强制执行DEBUG日志输出
-v, --verbose Turns on the verbose messages from Forever
# 开启Forever的详细日志输出
-s, --silent Run the child script silencing stdout and stderr
# 运行子脚本,并关闭标准输出与标准错误输出
-w, --watch Watch for file changes
# 监控变化的文件
--watchDirectory Top-level directory to watch from
# 监控变化的目录,默认从顶层目录开始
--watchIgnore To ignore pattern when watch is enabled (multiple option is allowed)
# 开启监控后,忽略监控的模式,可以有多个此配置
-t, --killTree Kills the entire child process tree on `stop`
# 使用“停止”参数后,杀死所有其子进程
--killSignal Support exit signal customization (default is SIGKILL)
used for restarting script gracefully e.g. --killSignal=SIGTERM
# 信号控制,支持定义退出信号,默认 SIGKILL;平滑的重启脚本,使用 --killSignal=SIGTERM 参数
-h, --help You're staring at it
# 帮助信息
[Long Running Process]
The forever process will continue to run outputting log messages to the console.
ex. forever -o out.log -e err.log my-script.js
# 运行forever 进程会一直输出日志信息到控制台,例如
[Daemon] # 守护进程模式
The forever process will run as a daemon which will make the target process start
in the background. This is extremely useful for remote starting simple node.js scripts
without using nohup. It is recommended to run start with -o -l, & -e.
ex. forever start -l forever.log -o out.log -e err.log my-daemon.js
forever stop my-daemon.js
# forever 进程会把目标进程做为一个守护进程在后台运行。
# 这对于远程启动NodeJs脚本很简单,其基本不使用nohup命令。
# 建议使用启动参数 -o -l -e 三个一起,例如:
# 开启:forever start -l forever.log -o out.log -e err.log my-daemon.js
# 停止:forever stop my-daemon.js

实际项目中的使用命令:
/data/server/node/bin/forever start -l $plog/wap2.log -e $plog/wap2_err.log -o $plog/wap2_out.log --pidFile $project/wap2.pid --sourceDir $project/wap2/ --workingDir $project/wap2/ --watchIgnore public --watchIgnore views --watch --append bin/www
说明:
1. -l $plog/wap2.log  :forever 日志
2. -e $plog/wap2_err.log :子进程错误日志
3. -o $plog/wap2_out.log : 子进程标准日志
4. --pidFile $project/wap2.pid :PID文件
5. --sourceDir $project/wap2/ :源码目录
6. --workingDir $project/wap2/ : 工件目录
7. --watchIgnore public : 忽略监控的目录,相对于工件目录
8.  --watch : 开启监控
9. --append  :日志追加
10. bin/www : 执行的脚本目录文件