当前位置: 首页 > news >正文

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

在日常运维和开发中,我们经常希望某些程序或服务在系统启动时自动运行,比如 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 ServiceAfter=network.target[Service]Type=simpleExecStart=/usr/bin/python3 /opt/myapp/app.pyRestart=on-failureUser=root[Install]WantedBy=multi-user.target

2. 重新加载 systemd 配置​​​​​​​

sudo systemctl daemon-reexecsudo systemctl daemon-reload

3. 设置开机启动

sudo systemctl enable myapp.service

4. 启动服务并检查状态​​​​​​​

sudo systemctl start myapp.servicesudo systemctl status myapp.service

二、使用 rc.local 实现自启(传统方式)
适用于旧版本 Linux 或需要简单实现时使用。
1. 编辑 rc.local 文件
某些系统默认该文件不存在或未设置执行权限。

sudo nano /etc/rc.local

添加你希望开机执行的命令,比如:​​​​​​​

#!/bin/bashpython3 /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-localsudo systemctl start rc-local

三、使用 crontab @reboot 设置自启(简洁快速)
cron 提供 @reboot 参数来在系统启动后运行任务。
1. 编辑当前用户的 crontab

crontab -e

添加以下内容:

@reboot /usr/bin/python3 /opt/myapp/app.py

2. 检查是否添加成功

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-units --type=service

查看 crontab 的启动项

crontab -l

结语
不同场景下设置开机自启的方法各有优劣,如果是做服务运维或开发部署,推荐使用 systemd 管理自启;如果只是简单脚本或测试,crontab @reboot 会更加快捷。

http://www.cnnetsun.cn/news/179139.html

相关文章:

  • Docker Compose 实战教程,理解Docker Compose核心概念,学会编写 compose.yml,掌握常用命令!
  • 科研征途的“智慧导航”:书匠策AI文献综述功能开启学术新视界
  • C语言程序设计基础入门
  • 地埋式积水监测站:道路积水监测系统
  • Open-AutoGLM账号锁定策略配置全解析(企业级安全加固方案)
  • 基于深度学习风力叶片缺陷检测系统 无人机自动巡检风电场 - 风电运维智能诊断平台 - 缺陷生命周期追踪系统
  • 【企业安全防线升级】:基于Open-AutoGLM的7种典型异常访问识别方案
  • 【Open-AutoGLM防护优化终极指南】:破解暴力攻击防御瓶颈的5大核心技术
  • LangFlow Azure Functions部署踩坑记录
  • Open-AutoGLM数据恢复控制技术(仅限高级安全团队掌握的3大核心)
  • 宏智树AI从“卡壳”到“定稿”:你的毕业论文,真的可以不用熬到凌晨三点-
  • 电子商务平台的业务峰值测试保障方案
  • 为什么你的Open-AutoGLM服务总被浏览器标记不安全?SSL配置盲区大起底
  • ColoredElevationMap 根据标量进行颜色映射
  • LangFlow B站视频内容创作方向建议
  • LangFlow代码质量检查工具集成(ESLint/Prettier)
  • LangFlow Google排名冲顶可能性分析
  • TLS 1.0/1.1停用倒计时,Open-AutoGLM如何快速适配TLS 1.2+?
  • 基于springboot的家教管理系统的设计与实现
  • 解锁科研新维度:书匠策AI期刊论文模块,开启学术写作的“智变”时代
  • LangFlow百度搜索排名优化技巧
  • 数智时代,openGauss Summit 2025即将发布哪些技术创新破局
  • LangFlow CI/CD流水线搭建实践
  • 论指针运算
  • 面试官:多模态 Transformer 如何处理不同模态的序列长度差异?
  • LangFlow结合RAG架构构建企业知识库问答
  • 480万人才缺口!网络安全,一个被低估的“金饭碗”!
  • Web 安全入门:从 OWASP Top 10 到常见漏洞,从零基础入门到精通,收藏这一篇就够了!_web top10
  • TOSHIBA 2SA1162-GR,LF SOT-23-3 三极管(BJT)
  • 【MWORKS使用技巧84】Sysplorer中使用Constants组件时,如何产生向量信号?