nohup
(no hang-up)命令可以使進程在用戶退出登錄后繼續運行,即使終端關閉也不會終止。然而,nohup
并不能完全防止進程被系統重啟影響。為了確保進程在系統重啟后自動恢復運行,你可以結合使用nohup
和systemd
服務。
以下是如何創建一個systemd
服務來管理你的進程:
/etc/systemd/system/my_service.service
。將my_service
替換為你的服務名稱。[Unit]
Description=My custom service
After=network.target
[Service]
Type=simple
User=my_user
WorkingDirectory=/path/to/working/directory
ExecStart=/path/to/your/script.sh
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
在這個文件中,你需要根據你的需求修改以下部分:
Description
: 服務的描述。After
: 指定服務啟動的順序,這里是在網絡啟動之后。User
: 運行服務的用戶。WorkingDirectory
: 服務的工作目錄。ExecStart
: 啟動服務的命令,這里是你需要運行的腳本。Restart
: 設置服務在退出時是否自動重啟,always
表示總是重啟。RestartSec
: 設置服務重啟之間的間隔時間。systemd
配置。運行以下命令以使systemd
重新加載服務文件:sudo systemctl daemon-reload
sudo systemctl start my_service
sudo systemctl enable my_service
現在,你的進程將在系統重啟后自動恢復運行,即使使用nohup
也無法阻止這種情況。