推荐使用systemd创建服务实现python脚本开机自启,需编写.service文件、重载配置、启用并启动服务;次选crontab @reboot方式,适合轻量场景但无自动重启能力。

在Linux中让Python脚本开机自动运行,核心是把脚本注册为系统服务(推荐)或加入开机启动序列。不同发行版略有差异,但主流方案以 systemd 为主(Ubuntu 16.04+、CentOS 7+、Debian 8+ 等均默认使用),兼容性好、可控性强、日志清晰。
用 systemd 创建服务(最推荐)
这是现代Linux的标准做法,能自动处理依赖、重启策略、用户权限和日志追踪。
- 写一个 service 文件:比如创建 /etc/systemd/system/myscript.service
[Unit] Description=My Python Script After=network.target [Service] Type=simple User=yourusername WorkingDirectory=/home/yourusername/myproject ExecStart=/usr/bin/python3 /home/yourusername/myproject/main.py Restart=always RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target
-
启用并启动服务:
sudo systemctl daemon-reload-
sudo systemctl enable myscript.service(开机自启) -
sudo systemctl start myscript.service(立即运行) -
sudo systemctl status myscript.service查看状态和日志
-
注意点:
- 确保
ExecStart路径中的 Python 和脚本路径绝对准确(可用which python3确认) - 如果脚本依赖虚拟环境,改用
ExecStart=/path/to/venv/bin/python /path/to/script.py - 若需图形界面(如调用 tkinter),systemd 默认无 DISPLAY,不建议用于 GUI 场景
- 确保
通过 crontab 的 @reboot(轻量简单,适合个人用途)
适合快速验证或非关键任务,无需 root 权限,但缺乏服务管理能力(如崩溃后不自动重启)。
调用 Cutout.Pro 视觉处理 API 进行背景移除、人像抠图和照片增强,支持文件上传与图片 URL 输入。
- 运行
crontab -e,添加一行:
@reboot /usr/bin/python3 /home/yourusername/myscript.py >> /home/yourusername/log.txt 2>&1
-
注意:
- 脚本中用到的命令(如
python3)必须写绝对路径(which python3查看) - 环境变量可能缺失(如 PATH、HOME),建议在脚本开头显式设置,或改用完整路径调用依赖
- 输出重定向很重要,否则看不到错误信息
- 脚本中用到的命令(如
其他方式(不推荐新项目使用)
如 /etc/rc.local 或桌面环境的“启动应用程序”,已逐渐被弃用或受限:
-
/etc/rc.local在某些新版系统(如 Ubuntu 22.04)默认禁用,需手动启用且不保证执行顺序 - GNOME/KDE 的图形启动项只在用户登录桌面后才触发,不属于“系统级开机启动”
- 这些方式调试困难、无日志、难维护,仅作临时兼容考虑
选 systemd 是稳妥之选;小工具或测试阶段用 crontab @reboot 更快上手。关键是确认脚本本身可手动运行、路径正确、权限足够,并留好日志定位问题。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










