啟動腳本

持續應用程式:啟動腳本產生器

PM2 可以產生啟動腳本並設定它們,以便在預期或意外的機器重新啟動時保持您的程序清單完整。

  • systemd:Ubuntu >= 16、CentOS >= 7、Arch、Debian >= 7
  • upstart:Ubuntu ==> 14
  • launchd:Darwin、MacOSX
  • openrc:Gentoo Linux、Arch Linux
  • rcd:FreeBSD
  • systemv:Centos 6、Amazon Linux

這些 init 系統會由 PM2 使用 pm2 startup 指令自動偵測。

產生啟動腳本

若要自動產生和設定啟動腳本,請輸入指令(無 sudo)pm2 startup

$ pm2 startup
[PM2] You have to run this command as root. Execute the following command:
      sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path>

然後將顯示的指令複製/貼上到終端機

sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path>

現在 PM2 將在開機時自動重新啟動。

注意:您可以透過 --service-name <name> 選項自訂服務名稱(#3213

儲存應用程式清單以便在重新開機時還原

在啟動所有想要的應用程式後,儲存應用程式清單,以便在重新開機後重新產生

pm2 save

手動復活程序

若要手動復原先前儲存的程序(透過 pm2 save)

pm2 resurrect

停用啟動系統

若要停用並移除目前的啟動設定

pm2 unstartup

前一行程式碼讓 PM2 偵測您的平台。或者,您可以使用以下方式自己使用另一個指定的 init 系統

升級 Node.js 版本後更新啟動腳本

升級本機 Node.js 版本時,請務必更新 PM2 啟動腳本,以便執行您已安裝的最新 Node.js 二進位檔。

首先停用並移除目前的啟動組態(複製/貼上該指令的輸出)

$ pm2 unstartup

然後還原新的啟動腳本

$ pm2 startup

使用者權限

假設您希望在其他使用者底下執行啟動腳本。

只要變更 -u <username> 選項和 --hp <user_home>

pm2 startup ubuntu -u www --hp /home/ubuntu

指定初始化系統

如果您願意,可以自行指定您使用的平台(平台可以是上述引用的其中一個)

pm2 startup [ubuntu | ubuntu14 | ubuntu16 | ubuntu18 | ubuntu20 | ubuntu12 | centos | centos6 | arch | oracle | amazon | macos | darwin | freebsd | systemd | systemv | upstart | launchd | rcd | openrc]

檢查 SystemD 安裝

# Check if pm2-<USER> service has been added
$ systemctl list-units
# Check logs
$ journalctl -u pm2-<USER>
# Cat systemd configuration file
$ systemctl cat pm2-<USER>
# Analyze startup
$ systemd-analyze plot > output.svg

有效率地等待機器上線,以便 PM2 執行

[Unit]
Wants=network-online.target
After=network.target network-online.target

[....]

[Install]
WantedBy=multi-user.target network-online.target

Windows 啟動腳本

若要產生相容於 Windows 的啟動腳本,請參閱出色的 pm2-installer

支援的初始化系統

  • systemd:Ubuntu >= 16、CentOS >= 7、Arch、Debian >= 7
  • upstart:Ubuntu <= 14
  • launchd:Darwin、MacOSX
  • openrc:Gentoo Linux、Arch Linux
  • rcd:FreeBSD
  • systemv:Centos 6、Amazon Linux

這些 init 系統會由 PM2 使用 pm2 startup 指令自動偵測。

為此頁面做出貢獻