优草派  >   Python

python程序保持后台运行?

徐晨光            来源:优草派

在日常的python开发中,有时我们需要让程序在后台持续运行,而不是关闭终端窗口或按下Ctrl+C导致程序停止运行。本篇文章将从多个角度分析如何让python程序保持后台运行。

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程序保持后台运行的方法:使用nohup命令、使用screen命令、使用systemd和使用Python代码。读者可以根据实际情况选择合适的方法。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行