【Python程序开发系列】如何让python脚本一直在后台保持运行

liftword5个月前 (01-21)技术文章43

这是我的第385篇原创文章。

一、引言

让 Python 脚本在后台持续运行,有几种常见的方式,具体方式可以根据你的系统环境和需求选择。

二、Linux 或 macOS 系统

2.1 使用 nohup命令

nohup(no hang up)命令可以让进程在后台运行,即使用户退出终端会话,该进程也会继续运行。

nohup python your_script.py &

nohup:命令会使得脚本在后台运行,并且输出会被重定向到 nohup.out文件。&:符号使得进程在后台运行。

如果你希望将输出重定向到特定文件,可以这样做:

nohup python your_script.py > output.log 2>&1 &

> output.log:将标准输出重定向到 output.log 文件。

2>&1:将标准错误输出(stderr)重定向到标准输出(stdout)。

2.2 使用 screen或 tmux工具

screen 和 tmux 是常见的终端复用工具,可以让你在后台运行多个会话,并且可以随时断开和重新连接。

启动一个新的 screen 会话:

screen -S my_session

运行你的 Python 脚本:

python your_script.py

按 Ctrl + A 然后按 D 来将会话放到后台。对于 tmux,操作类似。

2.3 使用 systemd服务(适用于 Linux 系统)

如果你需要将 Python 脚本作为系统服务运行,可以使用 systemd 服务来管理。创建一个新的 systemd 服务文件,例如 /etc/systemd/system/myscript.service:

sudo nano /etc/systemd/system/myscript.service
在文件中加入以下内容:[Unit]

Description=My Python Script

[Service]

ExecStart=/usr/bin/python3 /path/to/your_script.py

WorkingDirectory=/path/to/your/script

Restart=always

User=your_user

Group=your_group

StandardOutput=file:/path/to/log/output.log

StandardError=file:/path/to/log/error.log

[Install]

WantedBy=multi-user.target
重新加载 systemd 服务并启用它:sudo systemctl daemon-reload

sudo systemctl enable myscript.service

sudo systemctl start myscript.service
查看日志:sudo journalctl -u myscript.service

三、Windows 系统

3.1 使用 pythonw.exe

在 Windows 上,可以使用 pythonw.exe 来运行 Python 脚本。pythonw.exe 是一个没有命令行窗口的 Python 解释器,适用于后台运行脚本。

使用 pythonw.exe 来启动脚本:

pythonw your_script.py

3.2 使用任务计划程序(Task Scheduler)

Windows 提供了任务计划程序(Task Scheduler)来管理后台任务。

  1. 打开“任务计划程序”(Task Scheduler)。
  2. 选择“创建任务”(Create Task)。
  3. 在“常规”选项卡下,设置任务的名称和描述。
  4. 在“触发器”选项卡下,设置任务触发的条件(例如,系统启动时或指定时间)。
  5. 在“操作”选项卡中,选择“启动程序”,并选择 Python 可执行文件以及你的脚本。
  6. 点击“确定”,即可后台运行 Python 脚本。

3.3 使用 pyinstaller打包成可执行文件

如果你希望 Python 脚本在没有命令行界面的情况下运行,并且能够方便地管理,可以使用 pyinstaller 打包你的脚本成 Windows 可执行文件(.exe):

安装 pyinstaller

pip install pyinstaller

使用 pyinstaller 打包脚本:

pyinstaller --noconsole --onefile your_script.py

--noconsole 选项确保脚本没有控制台窗口。

--onefile 选项将所有文件打包成一个单一的可执行文件

执行后,生成的 .exe 文件会在 dist/ 目录中,可以直接在后台运行。

作者简介: 读研期间发表6篇SCI数据算法相关论文,目前在某研究院从事数据算法相关研究工作,结合自身科研实践经历持续分享关于Python、数据分析、特征工程、机器学习、深度学习、人工智能系列基础知识与案例。关注gzh:数据杂坛,获取数据和源码学习更多内容。

原文链接:

【Python程序开发系列】如何让python脚本一直在后台保持运行(干货总结)

相关文章

运维必备!用Python管理多个Linux服务器的连接与命令执行

引言:代码实现多个Linux服务器的SSH连接,支持添加、删除连接,执行命令,并返回标准输出。可以在需要时批量处理多个服务器,避免了手动逐个登录和执行命令的繁琐过程。代码封装如下:# -*- codi...

加速 Python 程序的 10 个技巧(python加快运算速度)

有很多方法可以提高 Python 应用程序的性能。以下是加快 Python 速度的 10 个硬核编码技巧。总的来说,人们使用 Python 是因为它方便且对程序员友好,而不是因为它快速。大量的第三方库...

我的名片能运行Linux和Python,还能玩2048小游戏,成本只要20元

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI猜猜它是什么?印着姓名、职位和邮箱,看起来是个名片。可是右下角有芯片,看起来又像是个PCB电路板。其实它是一台超迷你的ARM计算机,不仅能够运...

松勤技术精选:Python打包exe,换电脑也可直接运行哦!

为什么要打包exe有的时候只需要让别人运行某种功能,传输文件以及代码是需要别人配置好一定的环境才可以操作,而打包成exe文件就可以直接运行文件。pyinstaller打包python中毕竟常用的打包方...

可以在Linux上运行Windows软件吗(linux能运行win软件吗?)

Linux与Windows是什么首先需要回答Linux与Windows是什么?它们都属于操作系统的范畴,是一种软件,一种特殊的软件,而不是硬件(看的见摸的着),而且从某种意义上来说操作系统是计算机或者...

使用Python+Fabric实现Linux自动化操作

最近打算使用Python实现Linux自动化执行Shell命令,于是研究了一下Facbic库,Fabric是一个Python的库,提供了丰富的同SSH交互的接口,可以用来在本地或远程机器上自动化、流...