Linux
程序退出後自動重啟
我有一個在 nodejs 上執行的 javascript 程序。如果我執行以下命令:
node app.js
它繼續執行,但有時會退出。但是我想在它退出時自動重新啟動它。
對於 Linux 系統,是否有任何命令可以這樣做?請注意,我不想使用 cron 作業。
**快速而骯髒的方式:**如果使用 bash,那麼一個簡單的 bash 腳本怎麼樣:
#!/usr/bin/bash while true do node app.js done
順便說一句,這是錯誤的做法,因為您沒有考慮任務退出的原因,並且可能有很好的理由不重新啟動它。不是說它也可能在啟動時崩潰,被 oomkilled…
**在系統化的 linux 下更規範的方式:(**建議作為 @Kusulananda 說明的一部分,並受The Ultimate Guide to deploy your node app on Linux 的啟發):
假設 app.js 以 #!/usr/bin/env 節點聲明開頭,並且設置了 app.js x 文件模式位,
設計一個新服務:如果需要,在 /etc/systemd/system 目錄中創建一個 .service 文件,如果您的使用者只需要,則在 ~/.config/systemd/user 目錄中創建一個文件,如下所示:
[Unit] Description= #(Whatever String You Want) After= #(Any service that should be started before, ex. network.target) [Service] ExecStart= #(Key in the absolute path of app.js) Restart=always #(This will ensure the automatic restart) User= #(TBD depending on your system & wishes) Group= #(TBD depending on your system & wishes) Environment=PATH=/usr/bin:/usr/local/bin Environment=NODE_ENV=production WorkingDirectory= # (Absolute path of app.js working dir.) [Install] WantedBy= # multi-user.target or default.target according to your needs
您現在應該可以啟動它了:
systemctl --user start service_filename