在日常的python開發中,有時我們需要讓程序在后臺持續運行 , 而不是關閉終端窗口或按下Ctrl+C導致程序停止運行 。本篇文章將從多個角度分析如何讓python程序保持后臺運行 。

一、使用nohup命令
使用nohup命令可以讓程序在后臺持續運行 。例如,我們的python程序叫做test.py,執行以下命令即可:
nohup python test.py &
其中,&表示讓任務在后臺運行 。程序運行的輸出會保存在nohup.out文件中,可以使用tail命令查看運行日志 。
二、使用screen命令
使用screen命令也可以讓程序在后臺持續運行 。screen是一個終端窗口管理工具,可以在同一終端窗口中創建多個虛擬終端窗口,并可以在這些窗口之間自由切換 。例如,我們執行以下命令:
screen -S test
然后在新的虛擬窗口中執行python test.py即可 。此時,按下Ctrl+A+D即可切換回原來的窗口 , 而程序仍然在后臺運行 。
三、使用systemd
使用systemd也是一種讓程序在后臺持續運行的方法 。systemd是Linux下的服務管理器,可以管理系統啟動、進程管理等 。我們可以創建一個systemd服務,使得python程序在系統啟動時自動運行 。具體步驟如下:
1. 創建服務文件 , 比如test.service:
[Unit]
Description=test service
After=network.target
[Service]
ExecStart=/usr/bin/python /path/to/test.py
Restart=always
[Install]
WantedBy=multi-user.target
2. 將服務文件拷貝到systemd目錄下:
sudo cp test.service /etc/systemd/system/
3. 重新加載systemd配置:
sudo systemctl daemon-reload
4. 啟動服務:
sudo systemctl start test
至此,我們的python程序就會在后臺持續運行了 。
四、使用Python代碼
最后 , 我們介紹一種使用Python代碼讓程序在后臺持續運行的方法 。具體代碼如下:
import os
def create_daemon():
pid = os.fork()
if pid > 0:
# Exit first parent
sys.exit(0)
# Detach from parent environment
os.chdir('/')
os.setsid()
os.umask(0)
# Fork again, to ensure process cannot acquire terminal again.
pid = os.fork()
if pid > 0:
# Exit second parent
sys.exit(0)
# Redirect standard file descriptors.
sys.stdout.flush()
sys.stderr.flush()
si = open(os.devnull, 'r')
so = open(os.devnull, 'a+')
se = open(os.devnull, 'a+')
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
# Run the actual program.
main()
create_daemon()
使用該方法,我們可以在Python程序中調用create_daemon()函數即可讓程序在后臺持續運行 。
【python程序保持后臺運行?】綜上所述,我們介紹了四種讓python程序保持后臺運行的方法:使用nohup命令、使用screen命令、使用systemd和使用Python代碼 。讀者可以根據實際情況選擇合適的方法 。
猜你喜歡
- python中n 表示什么?
- python實現人工蜂群算法
- 實例代碼 Python3實現mysql連接和數據框的形成
- Python 爬蟲的工具列表大全
- python 8種必備的gui庫
- Python Flask框架實現簡單加法工具過程解析
- python怎么終止進程?
- python輸出列表差集?
- python字符的獲取方式
- python多線程中消息隊列如何實現?
