node 修改檔案自啟動
阿新 • • 發佈:2018-12-06
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