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

Linux系统开机自启动配置

方法一:使用 /etc/rc.local 配置


特点:启动时间晚于内核初始化,在系统服务启动完成之后执行,简单、快速部署

场景:适用于启动需要网络或系统服务的脚本(服务脚本、后台任务、shell 脚本)以及没有图形界面的服务器环境

注意:新版 systemd 系统默认不启用该文件,没有重启策略,不适合崩溃恢复,无法精确控制依赖项或用户权限


  1. 编辑 /etc/rc.local 文件
sudo vim /etc/rc.local
  1. 在文件中 exit 0 前面添加系统自启动的命令(按启动顺序,可根据实际需求放置在合适位置)
#!/bin/sh
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing....# 在此处添加你需要自启动的命令exit 0
  1. 如果没有 /etc/rc.local 则手动创建该文件,并添加以下内容
#!/bin/sh# 在此处添加你需要自启动的命令exit 0
  1. 给文件添加可执行权限,重启系统验证
sudo chmod +x /etc/rc.localsudo reboot

特殊情况(配置文件不生效)


  1. 查看系统是否设置了 rc-local 服务
ls /etc/systemd/system/rc-local.service
  1. 如果不存在,则手动创建 rc-local.service 文件
sudo vim /etc/systemd/system/rc-local.service
  1. 在 rc-local.service 文件中添加以下内容,保存退出
[Unit]
Description=/etc/rc.local Compatibility
After=network.target[Service]
Type=oneshot
ExecStart=/etc/rc.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes[Install]
WantedBy=multi-user.target
  1. 启用 rc-local.service 服务
sudo systemctl enable rc-local.servicesudo systemctl start rc-local.service

方法二:使用 Systemd 服务


特点:现代 Linux 系统推荐的标准自启动方式,控制粒度细,支持启动顺序、用户身份、自动重启等,可靠性高、日志清晰、支持依赖管理

场景:适用于后台服务、守护进程(Web服务、数据库、定时任务、守护脚本),需保证高可靠性和可维护性,多用户、容器、生产环境推荐

注意:脚本/程序必须有执行权限,Systemd 不会解析 Bash 的变量、管道、重定向符号


  1. 创建一个新的systemd服务单元文件,通常放置在/etc/systemd/system/目录下
sudo vim /etc/systemd/system/myprogram.service
  1. 在 myprogram.service 文件中写入以下内容
[Unit]
Description=My Program
After=network.target[Service]
ExecStart=/path/to/your/program
Restart=no
User=teamhd[Install]
WantedBy=multi-user.target# 参数说明:# ExecStart:指定程序的路径
# Restart:设置程序崩溃后重启,always表示总是重启,no表示脚本只运行一次
# User:指定运行该服务的用户(teamhd/root)
  1. 保存并退出编辑器,使服务文件生效并设置开机自启动,重启验证
sudo systemctl daemon-reloadsudo systemctl enable myprogram.service

方法三:使用 autostart 配置


特点:由桌面环境(GNOME/LXQT/XFCE)在用户图形会话启动时解析 .desktop 文件并启动应用

场景:适用于桌面环境中用户图形程序,需要在开机后自动打开某些窗口的程序

注意:无法在无头服务器上使用,不适用于系统服务或 CLI 程序


  1. 创建 autostart 文件夹(如果没有的话),然后在文件夹中创建一个新的桌面启动项
sudo mkdir -p ~/.config/autostartsudo vim ~/.config/autostart/chromium.desktop
  1. 在桌面启动项文件中写入以下内容,然后保存退出,重启系统验证
[Desktop Entry]
Name=My Program
Exec=/path/to/your/program
Type=Application
X-GNOME-Autostart-enabled=true
Comment=This is my program# 参数说明:# Name:给程序起一个名字(可自定义)
# Exec:指定要启动的程序的完整路径
# Type:设为Application表示启动的程序是一个应用程序
# X-GNOME-Autostart-enabled:设置为true表示启用该应用的自启动
# Comment:可选的程序描述
  1. .desktop文件可以通过图形化的文件管理器来管理,也可以直接手动编辑(非必须操作)
# 如果程序需要传递参数或有特定环境设置,可以在Exec字段中加入相应命令。例如:Exec=sh -c "export VAR=value && /path/to/your/program"

方法四:使用 Startup Applications 配置


特点:本质是配置 autostart 的 .desktop 文件,但通过 GUI 工具设置,对桌面用户友好

场景:适用于桌面环境用户个人配置,普通用户使用 GUI 程序开机自启

注意:只适用于桌面环境,无法处理系统级服务或后台程序,不适合运行复杂程序或系统服务


  1. 如果使用的是图形界面的Ubuntu版本,可以通过“启动应用程序”工具来设置开机自启动
# 打开“启动应用程序”工具# 在应用程序菜单中搜索Startup Applications或启动应用程序# 在弹出的窗口中,点击“添加”按钮# 填写程序的名称、命令和可选的描述:- Name: 给程序取个名字- Command: 输入程序的路径,例如/path/to/your/program- Comment: 可选描述,说明程序用途# 点击“添加”后,程序将在开机时自动启动

方法五:使用 ~/.bashrc 配置


特点:在用户每次登录打开交互式终端(如 gnome-terminal、xterm)时,shell 自动执行 .bashrc

场景:适用于简单命令行程序、脚本,登录终端后自动设置环境或启动工具,快速测试自动执行的代码片段

注意:不等于开机自启,只在打开终端时生效,会导致多个终端窗口重复执行程序,不适合服务或需要自动运行的应用


  1. 如果是通过终端运行程序,并希望在每次登录时自动启动,可以在~/.bashrc中添加启动命令
sudo vim  ~/.bashrc
  1. 在文件末尾添加启动命令
/path/to/your/program &
http://www.xdnf.cn/news/10391.html

相关文章:

  • 如何将内网的IP地址映射到外网?详细方法与步骤解析
  • Tomcat优化篇
  • 小白的进阶之路系列之九----人工智能从初步到精通pytorch综合运用的讲解第二部分
  • IDEA,Spring Boot,类路径
  • Vue框架2(vue搭建方式2:利用脚手架,ElementUI)
  • SQL注入攻击的方法与预防
  • 神经网络-Day42
  • 量化面试绿皮书:1. 海盗分金博弈
  • 【C/C++】面试常考题目
  • (面试)获取View宽高的几种方式
  • vim 的基本使用
  • 华为深度学习面试手撕题:手写nn.Conv2d()函数
  • C++: STL简介与string类核心技术解析及其模拟实现
  • vue3动态路由的实现以及目录权限的设置
  • Eclipse 修改字符集
  • [Godot] 如何导出安卓 APK 并在手机上调试
  • 【金融基础学习】债券市场与债券价值分析
  • ck-editor5的研究 (3):初步使用 CKEditor5 的事件系统和API
  • Mac电脑上本地安装 MySQL并配置开启自启完整流程
  • 历史数据分析——广州港
  • 计算机网络(5)——数据链路层
  • 【数据结构】图的存储(十字链表)
  • 微调大模型:什么时候该做,什么时候不该做?
  • 鸿蒙OS基于UniApp的WebRTC视频会议系统实践:从0到1的HarmonyOS适配之路#三方框架 #Uniapp
  • 【火山引擎 大模型批量处理数据教程-详细】
  • 基于千帆大模型的AI体检报告解读系统实战:使用OSS与PDFBox实现PDF内容识别
  • WEBSTORM前端 —— 第3章:移动 Web —— 第3节:移动适配
  • Rust 学习笔记:发布一个 crate 到 crates.io
  • Python 序列的修改、散列和切 片(Vector类第5版:格式化)
  • qwen3解读