在 CentOS 上让 Python 程序开机启动,常见有 3 种方式,取决于你的 CentOS 版本(6 / 7+)和使用场景。
这是最规范、最推荐的做法。
假设:
/usr/bin/python3/opt/myscript/main.pysudo vi /etc/systemd/system/mypython.service
内容示例:
[Unit]
Description=My Python Script
After=network.target
[Service]
ExecStart=/usr/bin/python3 /opt/myscript/main.py
WorkingDirectory=/opt/myscript
StandardOutput=journal
Restart=always
User=root
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reexec
sudo systemctl enable mypython
sudo systemctl start mypython
systemctl status mypython
journalctl -u mypython
✅ 重启后会自动启动
vi /etc/rc.d/rc.local
添加:
/usr/bin/python /opt/myscript/main.py &
chmod +x /etc/rc.d/rc.local
⚠️ 仅适合简单脚本,不推荐复杂服务
crontab -e
添加:
@reboot /usr/bin/python3 /opt/myscript/main.py >> /var/log/mypython.log 2>&1
✅ 适合轻量任务
❌ 不保证启动顺序
在 service 中指定环境:
Environment=PYTHONPATH=/opt/myscript
ExecStart=/opt/venv/bin/python /opt/myscript/main.py
After=network-online.target
Wants=network-online.target
| 场景 | 推荐方式 |
|---|---|
| CentOS 7/8 | ✅ systemd |
| 老系统 | rc.local |
| 简单脚本 | crontab |
如果你愿意,可以告诉我:
我可以帮你写一份可直接用的配置。