|
这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在日常运维和开发中,我们经常希望某些程序或服务在系统启动时自动运行,比如 Web 服务、数据库、监控脚本、定时任务等。本文将详细介绍在 Linux 系统中设置开机自启的常见方法,适用于常见发行版如 CentOS、Ubuntu、Debian 等。
一、使用 systemd 管理服务(推荐)
大多数现代 Linux 发行版(如 CentOS 7+/Ubuntu 16.04+)使用 systemd 作为初始化系统。
1. 创建 systemd 服务文件
- sudo nano /etc/systemd/system/myapp.service
复制代码 写入如下内容(根据实际情况修改):
[Unit]
Description=My Application Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target 2. 重新加载 systemd 配置
- sudo systemctl daemon-reexec
复制代码- sudo systemctl daemon-reload
复制代码 3. 设置开机启动
- sudo systemctl enable myapp.service
复制代码 4. 启动服务并检查状态
- sudo systemctl start myapp.service
复制代码- sudo systemctl status myapp.service
复制代码 二、使用 rc.local 实现自启(传统方式)
适用于旧版本 Linux 或需要简单实现时使用。
1. 编辑 rc.local 文件
某些系统默认该文件不存在或未设置执行权限。
添加你希望开机执行的命令,比如:
#!/bin/bash
python3 /opt/myapp/app.py &
exit 0 2. 添加执行权限
- sudo chmod +x /etc/rc.local
复制代码 3. 启用 rc.local(如果 systemd 系统中未启用)
对于 Ubuntu 20+,可以启用 rc-local.service:
- sudo systemctl enable rc-local
复制代码- sudo systemctl start rc-local
复制代码 三、使用 crontab @reboot 设置自启(简洁快速)
cron 提供 @reboot 参数来在系统启动后运行任务。
1. 编辑当前用户的 crontab
添加以下内容:
- @reboot /usr/bin/python3 /opt/myapp/app.py
复制代码 2. 检查是否添加成功
✅ 注意事项:
路径必须为绝对路径。
如果脚本依赖网络或数据库,可能需要 sleep 10 等等待逻辑。
输出建议重定向到日志文件,避免无法调试:
- @reboot /usr/bin/python3 /opt/myapp/app.py >> /var/log/myapp.log 2>&1
复制代码 四、使用桌面环境的“启动应用程序”(适用于图形界面)
如果你使用的是带 GUI 的系统,如 Ubuntu Desktop:
- 打开“启动应用程序”(Startup Applications)。
- 点击“添加”。
- 输入名称、命令和说明。
- 保存并重启验证。
五、总结对比
方法 | 适用范围 | 优点 | 缺点 | systemd | 推荐方式 | 稳定、可管理、日志完善 | 配置复杂一些 | rc.local | 老系统、简单任务 | 快速直接 | 兼容性差,已弃用 | crontab @reboot | 任意任务、自定义脚本 | 简洁灵活 | 无日志、管理不便 | GUI启动项 | 桌面用户 | 直观 | 无法用于服务程序 | 六、附录:查看已设置的开机启动项
查看 systemd 启动项
- systemctl list-unit-files | grep enabled
复制代码 查看当前正在运行的服务
- systemctl list-units --type=service
复制代码 查看 crontab 的启动项
结语
不同场景下设置开机自启的方法各有优劣,如果你是做服务运维或开发部署,推荐使用 systemd 管理自启;如果只是简单脚本或测试,crontab @reboot 会更加快捷。
如有具体使用需求或遇到问题,欢迎评论交流!
|
|