在 Ubuntu 系统上部署 Python 脚本作为后台守护进程,是开发者经常遇到的需求。许多人在编写完脚本后,都希望它能稳定运行、开机自启、崩溃后自动恢复——此时systemd 是最可靠、最标准的解决方案。下面将整个过程逐步拆解,跟着操作即可完成配置。

-
新建一个服务单元文件
打开终端,使用nano或vim等文本编辑器创建一个.service文件。例如用nano:sudo nano /etc/systemd/system/my_python_service.service -
编辑服务配置参数
在文件中写入以下内容,请根据实际脚本路径和运行用户信息进行相应调整:[Unit] Description=My Python Service After=network.target [Service] Type=simple User=Group= WorkingDirectory=/path/to/your/script ExecStart=/usr/bin/python3 /path/to/your/script/your_script.py Restart=on-failure [Install] WantedBy=multi-user.target Description:为服务定义一个易识别的名称,便于管理。After:指定启动顺序,这里设置为网络就绪后再启动服务,避免因网络依赖而出错。Type:使用simple类型,表示直接执行命令,无需额外等待。User和Group:指定运行脚本的用户和用户组,除非必要,否则不建议使用 root 权限。WorkingDirectory:设置脚本的工作目录,例如脚本中若引用了相对路径的文件,则需在此指定。ExecStart:核心启动命令——Python 解释器路径加上脚本的绝对路径。Restart:设置为on-failure,当脚本异常退出时,systemd 会自动重启该服务。WantedBy:通常选择multi-user.target,使服务在系统进入多用户模式时自动启动。
-
让 systemd 重新加载配置
保存文件后,必须执行以下命令通知 systemd 配置已更新:sudo systemctl daemon-reload -
启动服务
配置完成后,直接启动服务进行测试:sudo systemctl start my_python_service.service -
设置开机自启
若希望服务器重启后脚本自动运行,请执行:sudo systemctl enable my_python_service.service -
检查服务运行状态
使用status命令确认服务是否正常运行:sudo systemctl status my_python_service.service如果输出中显示
Active: active (running),说明服务已成功启动。 -
查看日志输出
当遇到问题或需要查看脚本的输出时,使用journalctl命令:sudo journalctl -u my_python_service.service
最后提醒一点:记得为你的 Python 脚本添加可执行权限(chmod +x),并确保脚本在 WorkingDirectory 指定的目录下能正常运行。如果脚本依赖特定的环境变量,可以在 [Service] 段中通过 Environment 字段来设置。按照上述步骤操作后,你的 Python 脚本就能像系统原生服务一样稳定运行,并具备自动重启与开机自启的能力。
