1. 程式人生 > >node 修改檔案自啟動

node 修改檔案自啟動

forever vs supervisor

forever https://github.com/foreverjs/forever

1、安裝

cnpm install forever -g

2、

[email protected]:~/mygithub/node_Package/koa$ forever -help
help:    usage: forever [action] [options] SCRIPT [script-options]
help:
help:    Monitors the script specified in the current process
or as a daemon help: help: actions: help: start Start SCRIPT as a daemon help: stop Stop the daemon SCRIPT by Id|Uid|Pid|Index|Script help: stopall Stop all running forever scripts help: restart Restart the daemon SCRIPT help: restartall Restart all running forever
scripts help: list List all running forever scripts help: config Lists all forever user configuration help: set <key> <val> Sets the specified forever config <key> help: clear <key> Clears the specified forever config <key> help: logs Lists log
files for all forever processes help: logs <script|index> Tails the logs for <script|index> help: columns add <col> Adds the specified column to the output in `forever list` help: columns rm <col> Removed the specified column from the output in `forever list` help: columns set <cols> Set all columns for the output in `forever list` help: columns reset Resets all columns to defaults for the output in `forever list` help: cleanlogs [CAREFUL] Deletes all historical forever log files help: help: options: help: -m MAX Only run the specified script MAX times help: -l LOGFILE Logs the forever output to LOGFILE help: -o OUTFILE Logs stdout from child script to OUTFILE help: -e ERRFILE Logs stderr from child script to ERRFILE help: -p PATH Base path for all forever related files (pid files, etc.) help: -c COMMAND COMMAND to execute (defaults to node) help: -a, --append Append logs help: -f, --fifo Stream logs to stdout help: -n, --number Number of log lines to print help: --pidFile The pid file help: --uid Process uid, useful as a namespace for processes (must wrap in a string) help: e.g. forever start --uid "production" app.js help: forever stop production help: --sourceDir The source directory for which SCRIPT is relative to help: --workingDir The working directory in which SCRIPT will execute help: --minUptime Minimum uptime (millis) for a script to not be considered "spinning" help: --spinSleepTime Time to wait (millis) between launches of a spinning script. help: --colors --no-colors will disable output coloring help: --plain alias of --no-colors help: -d, --debug Forces forever to log debug output help: -v, --verbose Turns on the verbose messages from Forever help: -s, --silent Run the child script silencing stdout and stderr help: -w, --watch Watch for file changes help: --watchDirectory Top-level directory to watch from help: --watchIgnore To ignore pattern when watch is enabled (multiple option is allowed) help: -t, --killTree Kills the entire child process tree on `stop` help: --killSignal Support exit signal customization (default is SIGKILL) help: used for restarting script gracefully e.g. --killSignal=SIGTERM help: -h, --help You're staring at it help: help: [Long Running Process] help: The forever process will continue to run outputting log messages to the console. help: ex. forever -o out.log -e err.log my-script.js help: help: [Daemon] help: The forever process will run as a daemon which will make the target process start help: in the background. This is extremely useful for remote starting simple node.js scripts help: without using nohup. It is recommended to run start with -o -l, & -e. help: ex. forever start -l forever.log -o out.log -e err.log my-daemon.js help: forever stop my-daemon.js help:

3、我發線在改node

// 改模版裡面的東西重新整理可以得到最新的東西,但是改node server裡面的東西還是無效
const fs = require('fs.promised');
const Koa = require('koa');
const app = new Koa();

const main = async function (ctx, next) {
  ctx.response.type = 'html';
  ctx.response.body = await fs.readFile('./server/template/template.html', 'utf8');
};

app.use(main);
app.listen(3000);

supervisor

1、

cnpm install supervisor -g 

2、

[email protected]:~/mygithub/node_Package/koa$ supervisor -help

Node Supervisor is used to restart programs when they crash.
It can also be used to restart programs when a *.js file changes.

Usage:
  supervisor [options] <program>
  supervisor [options] -- <program> [args ...]

Required:
  <program>
    The program to run.

Options:
  -w|--watch <watchItems>
    A comma-delimited list of folders or js files to watch for changes.
    When a change to a js file occurs, reload the program
    Default is '.'

  -i|--ignore <ignoreItems>
    A comma-delimited list of folders to ignore for changes.
    No default

  --ignore-symlinks
    Enable symbolic links ignoring when looking for files to watch.

  -p|--poll-interval <milliseconds>
    How often to poll watched files for changes.
    Defaults to Node default.

  -e|--extensions <extensions>
    Specific file extensions to watch in addition to defaults.
    Used when --watch option includes folders
    Default is 'node,js'

  -x|--exec <executable>
    The executable that runs the specified program.
    Default is 'node'

  --debug[=port]
    Start node with --debug flag.

  --debug-brk[=port]
    Start node with --debug-brk[=port] flag.

  --harmony
    Start node with --harmony flag.
  --inspect
    Start node with --inspect flag.

  --harmony_default_parameters
    Start node with --harmony_default_parameters flag.

  -n|--no-restart-on error|exit
    Don't automatically restart the supervised program if it ends.
    Supervisor will wait for a change in the source files.
    If "error", an exit code of 0 will still restart.
    If "exit", no restart regardless of exit code.
    If "success", no restart only if exit code is 0.

  -t|--non-interactive
    Disable interactive capacity.
    With this option, supervisor won't listen to stdin.

  -k|--instant-kill
    use SIGKILL (-9) to terminate child instead of the more gentle SIGTERM.

  --force-watch
    Use fs.watch instead of fs.watchFile.
    This may be useful if you see a high cpu load on a windows machine.

  -s|--timestamp
    Log timestamp after each run.
    Make it easy to tell when the task last ran.

  -h|--help|-?
    Display these usage instructions.

  -q|--quiet
    Suppress DEBUG messages

  -V|--verbose
    Show extra DEBUG messages

Options available after start:
rs - restart process.
     Useful for restarting supervisor eaven if no file has changed.

Examples:
  supervisor myapp.js
  supervisor myapp.coffee
  supervisor -w scripts -e myext -x myrunner myapp
  supervisor -- server.js -h host -p port

二者比較,
1、就實際操作,感覺還是supervisor好用,並且即使改變的是node server中程式碼也能實現重新整理後得到新的結果

const Koa = require('koa');
const compose = require('koa-compose');
const app = new Koa();

const logger = (ctx, next) => {
  console.log(`${Date.now()} ${ctx.request.method} ${ctx.request.url}`);
  next();
}

const main = ctx => {
  ctx.response.body = 'Hello saa World';
};

const middlewares = compose([logger, main]);

app.use(middlewares);
app.listen(3000);

2、forever 在win 小出現了問題,在mac上面改變server程式碼,重新整理頁面,得到的資料還是舊的,supervisor完好
3、啟動後 forever start ….. 完後,就啟動了不能使用ctrl + c 停止,只能用命令 forever stop ….,supervisor可以使用ctrl + c 停止

這裡寫圖片描述

這裡寫圖片描述

開發的時候建議使用 supervisor,至於線上,如果害怕手賤一不注意把服務關掉就用forever

參考: https://blog.csdn.net/aerchi/article/details/73650296?locationNum=5&fps=1