在 CentOS 上,你可以使用以下幾種方法來確保 Python 腳本在斷開終端后繼續運行:
1. 使用 nohup
命令
nohup
命令可以讓進程在終端關閉后繼續運行。
nohup python main.py > output.log 2>&1 &
nohup
:忽略掛斷信號,使進程在終端關閉后繼續運行。> output.log
:將標準輸出重定向到output.log
文件。2>&1
:將標準錯誤輸出重定向到標準輸出(即output.log
文件)。&
:將進程放到后臺運行。
2. 使用 screen
命令
screen
是一個終端多路復用器,可以讓你在斷開終端后重新連接到會話。
# 安裝 screen
sudo yum install screen# 啟動一個新的 screen 會話
screen -S mysession# 在 screen 會話中運行 Python 腳本
python main.py# 按下 Ctrl+A 然后按 D 來分離 screen 會話# 重新連接到 screen 會話
screen -r mysession
3. 使用 systemd
服務
systemd
是 CentOS 的初始化系統,可以用來管理守護進程。
- 創建一個新的服務文件:
sudo vi /etc/systemd/system/my_python_service.service
- 在文件中添加以下內容:
[Unit]
Description=My Python Script
After=network.target[Service]
ExecStart=/usr/bin/python3 /path/to/main.py
WorkingDirectory=/path/to/your/script
Restart=always
User=your_username[Install]
WantedBy=multi-user.target
ExecStart
:指定要運行的命令。WorkingDirectory
:指定腳本的工作目錄。Restart=always
:確保腳本在崩潰或系統重啟后自動重啟。User
:指定運行腳本的用戶。
-
保存并退出編輯器。
-
重新加載
systemd
配置:
sudo systemctl daemon-reload
- 啟動服務:
sudo systemctl start my_python_service
- 設置服務開機自啟動:
sudo systemctl enable my_python_service
4. 使用 tmux
命令
tmux
是另一個終端多路復用器,類似于 screen
。
# 安裝 tmux
sudo yum install tmux# 啟動一個新的 tmux 會話
tmux new -s mysession# 在 tmux 會話中運行 Python 腳本
python main.py# 按下 Ctrl+B 然后按 D 來分離 tmux 會話# 重新連接到 tmux 會話
tmux attach -t mysession
總結
nohup
是最簡單的解決方案,適合臨時任務。screen
和tmux
適合需要交互的會話。systemd
是最健壯的解決方案,適合長期運行的守護進程。
根據你的需求選擇合適的方法。