Windows/Linux PM2進程管理工具-7X24小時服務進程管理

官方地址:https://pm2.keymetrics.io/docs/usage/process-management/

GitHub:https://github.com/Unitech/PM2/releases

NODE.JS的高級生產過程管理器

PM2是守護進程管理器,它將幫助您管理和保持應用程序24/7在線。

7在

PM2是守護進程管理器,可以幫助您管理和保持應用程序在線。PM2入門非常簡單,它是一個簡單直觀的CLI,可以通過NPM安裝。

安裝

可通過NPM或Yarn安裝最新的PM2版本:

$ npm install pm2@latest -g
# or
$ yarn global add pm2

要安裝Node.js和NPM,可以使用NVM

啓動一個應用

啓動,守護和監視應用程序的最簡單方法是使用以下命令行:

$ pm2 start app.js

或輕鬆啓動任何其他應用程序:

$ pm2 start bashscript.sh
$ pm2 start python-app.py --watch
$ pm2 start binary-file -- --port 1520

可以傳遞給CLI的一些選項:

# Specify an app name
--name <app_name>

# Watch and Restart app when files change
--watch

# Set memory threshold for app reload
--max-memory-restart <200MB>

# Specify log file
--log <log_path>

# Pass extra arguments to the script
-- arg1 arg2 arg3

# Delay between automatic restarts
--restart-delay <delay in ms>

# Prefix logs with time
--time

# Do not auto restart app
--no-autorestart

# Specify cron for forced restart
--cron <cron_pattern>

# Attach to application log
--no-daemon

如您所見,許多選項可用於通過PM2管理您的應用程序。您將根據用例發現它們。

管理流程

管理應用程序狀態很簡單,以下是命令:

$ pm2 restart app_name
$ pm2 reload app_name
$ pm2 stop app_name
$ pm2 delete app_name

而不是app_name您可以通過:

  • all 在所有過程中採取行動
  • id 對特定的進程ID採取行動

檢查狀態,日誌,指標

現在,您已經啓動了該應用程序,可以檢查其狀態,日誌,指標,甚至可以通過pm2.io獲取在線儀表板。

列出託管的應用程序

列出由PM2管理的所有應用程序的狀態:

$ pm2 [list|ls|status]

 

顯示日誌

要實時顯示日誌:

$ pm2 logs

要挖掘較舊的日誌,請執行以下操作:

$ pm2 logs --lines 200

基於終端的儀表板

這是一個直接適合您終端的實時儀表板:

$ pm2 monit

 

pm2.io:監視和診斷Web界面

基於Web的儀表板,帶有診斷系統的跨服務器:

$ pm2 plus

 

集羣模式

對於Node.js應用程序,PM2包含一個自動負載平衡器,它將在每個衍生進程之間共享所有HTTP [s] / Websocket / TCP / UDP連接。

要以羣集模式啓動應用程序:

$ pm2 start app.js -i max

在此處閱讀有關集羣模式的更多信息。

生態系統文件

您還可以創建一個配置文件,稱爲生態系統文件,以管理多個應用程序。生成生態系統文件:

$ pm2 ecosystem

這將生成和生態系統.config.js文件:

module.exports = {
  apps : [{
    name: "app",
    script: "./app.js",
    env: {
      NODE_ENV: "development",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }, {
     name: 'worker',
     script: 'worker.js'
  }]
}

並輕鬆啓動:

$ pm2 start process.yml

在此處閱讀有關應用程序聲明的更多信息。

設置啓動腳本

使用服務器引導/重新引導中管理的進程重新啓動PM2至關重要。要解決此問題,只需運行以下命令即可生成活動的啓動腳本:

$ pm2 startup

並凍結自動重生的進程列表:

$ pm2 save

在此處閱讀有關啓動腳本生成器的更多信息。

更改後重新啓動應用程序

--watch選項非常簡單:

$ cd /path/to/my/app
$ pm2 start env.js --watch --ignore-watch="node_modules"

這將監視並重啓當前目錄+所有子文件夾中的任何文件,並忽略該應用程序,並且將忽略node_modules文件夾中的任何更改--ignore-watch="node_modules"

然後,您可以pm2 logs用來檢查重新啓動的應用程序日誌。

更新PM2

我們簡化了流程,各個版本之間沒有重大變化,過程也很簡單:

npm install pm2@latest -g

然後更新內存中的PM2:

pm2 update

備忘單

以下是一些值得了解的命令。只需使用示例應用程序或開發計算機上的當前Web應用程序來嘗試它們:

# Fork mode
pm2 start app.js --name my-api # Name process

# Cluster mode
pm2 start app.js -i 0        # Will start maximum processes with LB depending on available CPUs
pm2 start app.js -i max      # Same as above, but deprecated.
pm2 scale app +3             # Scales `app` up by 3 workers
pm2 scale app 2              # Scales `app` up or down to 2 workers total

# Listing

pm2 list               # Display all processes status
pm2 jlist              # Print process list in raw JSON
pm2 prettylist         # Print process list in beautified JSON

pm2 describe 0         # Display all informations about a specific process

pm2 monit              # Monitor all processes

# Logs

pm2 logs [--raw]       # Display all processes logs in streaming
pm2 flush              # Empty all log files
pm2 reloadLogs         # Reload all logs

# Actions

pm2 stop all           # Stop all processes
pm2 restart all        # Restart all processes

pm2 reload all         # Will 0s downtime reload (for NETWORKED apps)

pm2 stop 0             # Stop specific process id
pm2 restart 0          # Restart specific process id

pm2 delete 0           # Will remove process from pm2 list
pm2 delete all         # Will remove all processes from pm2 list

# Misc

pm2 reset <process>    # Reset meta data (restarted time...)
pm2 updatePM2          # Update in memory pm2
pm2 ping               # Ensure pm2 daemon has been launched
pm2 sendSignal SIGUSR2 my-app # Send system signal to script
pm2 start app.js --no-daemon
pm2 start app.js --no-vizion
pm2 start app.js --no-autorestart

下一步是什麼?

瞭解如何將應用程序的所有行爲選項聲明爲JSON配置文件

瞭解如何清潔停止並重新啓動以提高可靠性。

瞭解如何輕鬆部署和更新生產應用程序

使用Keymetrics監視您的生產應用程序。

如何更新PM2

安裝最新的pm2版本:

npm install pm2@latest -g

然後更新內存中的PM2:

pm2 update

更多實踐參考:https://www.cnblogs.com/wangcp-2014/p/10874417.html 此外管理非守護進程也可以用Supervisor。

Supervisor

Supervisor是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓。它是通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啓動,這樣只要在supervisor的配置文件中,把要管理的進程的可執行文件的路徑寫進去即可。也實現當子進程掛掉的時候,父進程可以準確獲取子進程掛掉的信息的,可以選擇是否自己啓動和報警。supervisor還提供了一個功能,可以爲supervisord或者每個子進程,設置一個非root的user,這個user就可以管理它對應的進程。

Supervisor使用詳解

supervisor介紹與使用

supervisor安裝與配置

發佈了625 篇原創文章 · 獲贊 534 · 訪問量 358萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章