lin 发表于 2025-5-20 15:50:22

Linux 如何设置开机自启:全面指南

在日常运维和开发中,我们经常希望某些程序或服务在系统启动时自动运行,比如 Web 服务、数据库、监控脚本、定时任务等。本文将详细介绍在 Linux 系统中设置开机自启的常见方法,适用于常见发行版如 CentOS、Ubuntu、Debian 等。
一、使用 systemd 管理服务(推荐)
大多数现代 Linux 发行版(如 CentOS 7+/Ubuntu 16.04+)使用 systemd 作为初始化系统。
1. 创建 systemd 服务文件
sudo nano /etc/systemd/system/myapp.service写入如下内容(根据实际情况修改):


Description=My Application Service
After=network.target


Type=simple
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
User=root


WantedBy=multi-user.target2. 重新加载 systemd 配置
sudo systemctl daemon-reexecsudo systemctl daemon-reload3. 设置开机启动
sudo systemctl enable myapp.service4. 启动服务并检查状态
sudo systemctl start myapp.servicesudo systemctl status myapp.service二、使用 rc.local 实现自启(传统方式)
适用于旧版本 Linux 或需要简单实现时使用。
1. 编辑 rc.local 文件
某些系统默认该文件不存在或未设置执行权限。
sudo nano /etc/rc.local添加你希望开机执行的命令,比如:

#!/bin/bash
python3 /opt/myapp/app.py &
exit 02. 添加执行权限
sudo chmod +x /etc/rc.local3. 启用 rc.local(如果 systemd 系统中未启用)
对于 Ubuntu 20+,可以启用 rc-local.service:
sudo systemctl enable rc-localsudo systemctl start rc-local三、使用 crontab @reboot 设置自启(简洁快速)
cron 提供 @reboot 参数来在系统启动后运行任务。
1. 编辑当前用户的 crontab
crontab -e添加以下内容:
@reboot /usr/bin/python3 /opt/myapp/app.py2. 检查是否添加成功
crontab -l✅ 注意事项:
路径必须为绝对路径。
如果脚本依赖网络或数据库,可能需要 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 的启动项
crontab -l结语
不同场景下设置开机自启的方法各有优劣,如果你是做服务运维或开发部署,推荐使用 systemd 管理自启;如果只是简单脚本或测试,crontab @reboot 会更加快捷。
如有具体使用需求或遇到问题,欢迎评论交流!

页: [1]
查看完整版本: Linux 如何设置开机自启:全面指南