nohup是一個Linux命令,用於在系統後臺不結束通話地執行命令,退出終端不會影響程式的執行1nohup的英文全稱是no hang up(不掛起)。
nohup為什麼不穩定,可能有以下幾個原因:
1.nohup命令只能保證程式在後臺執行,但不能保證程式不會因為其他原因而終止,比如記憶體不足、程式異常、系統重啟等。
2.nohup命令在預設情況下(非重定向時),會輸出一個名叫nohup.out的檔案到當前目錄下,如果當前目錄的nohup.out檔案不可寫,輸出重定向到$HOME/nohup.out檔案中
3如果這些檔案被刪除或者磁碟空間不足,可能會導致程式無法正常輸出或者崩潰。
4.nohup命令在執行時,會將當前shell的標準輸入、標準輸出和標準錯誤輸出全部重定向到/dev/null裝置中,避免被關閉終端的訊號所中斷,但是,如果程式需要從標準輸入讀取資料或者向標準輸出和標準錯誤輸出寫入資料,那麼nohup命令可能會造成程式阻塞或者異常。
這個時候我想到了forever,因為之前碰到類似的問題,也寫文章寫了如何安裝,但是在安裝完之後碰到過一個問題,就是這個問題,但是當我安裝完執行的時候報錯如下
報錯資訊
(node:9352) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
找到了相關的解決方案是說這個錯誤是因為 Node.js 中存在迴圈模組依賴,導致在解析模組過程中存取了未定義的屬性,node在高於node14以後就不支援迴圈依賴,所以會報錯,如果切換node版本低於14或者12就不會有這個問題,但是,因為專案的版本是node16,所以切換版本是不可能的, 所以解決方案要麼就是解決掉迴圈依賴的問題,要麼就是換其他的持久化工具,綜合條件下我選擇了第二種,切換持久話工具,那就是pm2
PM2 是一個守護行程管理工具,幫助您管理和守護您的應用程式。它以簡單直觀的 CLI 命令列方式進行工作。當然,pm2還有一個非常好用的功能就是開機自啟動程式
上傳檔案到/home/tool/pm2 目錄下,這個可以自己決定到那個目錄,但是下面的路徑需要和安裝的路徑保持一致,當然簡單安裝就是
npm install pm2 -g
但是問題就是重啟之後pm2的環境變數就不見了,當然也有可能是個例,所以我選擇了下面的安裝方式
安裝包地址
連結: https://pan.baidu.com/s/1XbeL48bGgR2oM14Uc9VCKw
提取碼: xxxq
解壓
tar -xvf pm2-5.2.2.tar
建立軟連線
ln -s /home/tool/pm2/pm2-5.2.2/bin/pm2 /usr/local/bin/pm2
安裝完成後,在任何地方輸入pm2會列印下面的資訊
pm2
cd /home/20230809
pm2 start ./src/app.js --silent //--silent表示不需要紀錄檔,但是還是可以看到紀錄檔,奇怪
pm2 ls
前臺存取
pm2 stop all
pm2 restart all
pm2 logs
啟動:
$ pm2 startup
儲存:
$ pm2 save
更多的功能請存取官網瞭解