nohup
(no hang up)命令用于在Linux和Unix系統中使進程忽略掛起(SIGHUP)信號,從而在用戶退出系統或關閉終端后繼續運行
使用nohup
命令啟動程序:
nohup your_command &
這將在后臺運行your_command
,并將輸出重定向到名為nohup.out
的文件。&
符號表示將進程放入后臺運行。
如果程序已經運行,可以使用ps
命令找到進程ID(PID):
ps aux | grep your_command
在輸出中找到與your_command
相關的進程,記下它的PID。
使用kill
命令發送SIGTERM
信號以優雅地停止進程:
kill -15 PID
將PID
替換為實際的進程ID。
如果進程無法正常停止,可以使用kill
命令發送SIGKILL
信號強制終止進程:
kill -9 PID
將PID
替換為實際的進程ID。
為了實現故障恢復,可以考慮使用進程管理工具,如systemd
、supervisord
或monit
。這些工具可以幫助您監控進程狀態,并在進程意外終止時自動重啟。
例如,使用systemd
創建一個服務單元文件:
創建一個名為your_command.service
的文件,內容如下:
[Unit]
Description=Your Command Service
[Service]
ExecStart=/path/to/your_command
Restart=always
User=username
[Install]
WantedBy=multi-user.target
將/path/to/your_command
替換為實際的命令路徑,將username
替換為運行進程的用戶。
將服務單元文件復制到/etc/systemd/system/
目錄:
sudo cp your_command.service /etc/systemd/system/
重新加載systemd
配置:
sudo systemctl daemon-reload
啟動服務:
sudo systemctl start your_command.service
設置服務在系統啟動時自動運行:
sudo systemctl enable your_command.service
現在,your_command
將在系統啟動時自動運行,并在意外終止時自動恢復。您還可以使用systemctl
命令查看服務狀態、重啟服務等。