持續應用程式:啟動腳本產生器
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
指令自動偵測。