在 Ubuntu 里装好 Python 之后,很多人下一步不是“怎么运行脚本”,而是“怎么让脚本长期稳定地在后台跑着”。如果你希望它像数据库、Web 服务那样由系统统一托管,最常见也最稳妥的做法就是交给 systemd 管理。
下面按实际部署顺序整理一遍:先处理脚本权限,再编写 .service 文件,随后加载配置、启动服务,并检查运行状态。照着做,你不仅能把脚本拉起来,也能判断它是否已经具备开机自启和故障自动恢复能力。
为什么推荐用 systemd 管理 Python 服务
直接在终端里执行 Python 脚本,只适合临时测试;一旦终端关闭,脚本往往也会退出。放到 Ubuntu 的正式环境中,更合适的方式是把它注册为 systemd 服务。
这样做的好处很直接:
- 可以用统一命令启动、停止、重启服务;
- 可以设置开机自动启动;
- 服务异常退出后,可以按配置自动重启;
- 更便于后续排查运行状态。
先给 Python 脚本执行权限
如果你的脚本还没有执行权限,先处理这一步:
chmod +x /path/to/your/python_script.py这里的 /path/to/your/python_script.py 需要替换成脚本实际路径。虽然 systemd 主要依赖 ExecStart 来启动程序,但提前把权限设好,能减少后续执行时的权限问题。
创建 systemd 服务文件
核心步骤是创建一个服务描述文件,例如:

/etc/systemd/system/my_python_service.service用 nano 或 vim 打开后,写入以下内容:
[Unit]
Description=My Python Service
After=network.target
[Service]
Type=simple
User=
Group=
WorkingDirectory=/path/to/your/script/directory
ExecStart=/usr/bin/python3 /path/to/your/python_script.py
Restart=on-failure
[Install]
WantedBy=multi-user.target 其中有几个字段需要特别注意:
服务文件里的关键字段怎么替换
User=:替换为实际运行脚本的用户。Group=:替换为对应用户组。WorkingDirectory=/path/to/your/script/directory:替换为脚本所在目录,避免脚本依赖相对路径时出错。ExecStart=/usr/bin/python3 /path/to/your/python_script.py:保留 Python 解释器路径,并把脚本路径改成真实位置。Restart=on-failure:表示脚本异常退出时自动重启。
如果你的环境仍在使用 Python 2,需要把:
/usr/bin/python3改为:
/usr/bin/python2加载配置并启动服务
服务文件创建完成后,systemd 还不知道有这份新配置,需要先重新加载:

sudo systemctl daemon-reload接着启动服务:
sudo systemctl start my_python_service启动后马上检查状态:
sudo systemctl status my_python_service如果输出中显示 active (running),通常就说明这个 Python 脚本已经作为后台服务正常运行起来了。
设置开机自启与日常管理命令
如果你希望系统启动时自动拉起这个服务,可以执行:
sudo systemctl enable my_python_service后续日常维护时,最常用的是停止和重启:
sudo systemctl stop my_python_service
sudo systemctl restart my_python_service这组命令基本覆盖了上线后的常见操作场景:首次启动、服务检查、重启更新,以及手动停用。
部署这类 Python 后台服务时要记住什么
在 Ubuntu 下,Python 脚本要想稳定地“跑成服务”,关键不在安装 Python 本身,而在于是否正确接入 systemd。最重要的几个点是:服务文件路径写对、User/Group 替换正确、WorkingDirectory 和 ExecStart 使用真实路径,以及启动后用 systemctl status 确认状态。
只要这些配置无误,你的脚本就能从“手动执行的小程序”,变成一个可启动、可重启、可开机自启的标准 Ubuntu 服务。







