Linux 系统中设置开机启动脚本

news2025/5/18 4:56:11

Linux 系统中设置开机启动脚本有多种方法,适用于不同的场景和需求。以下是几种最常用且详细的方法:

核心理念: 无论哪种方法,核心都是让系统在启动过程中的某个阶段执行你的脚本。

1. 使用 systemd (推荐,现代 Linux 发行版的标准)

systemd 是目前大多数主流 Linux 发行版(如 Ubuntu 16.04+, CentOS 7+, Debian 8+, Fedora 15+)使用的初始化系统和服务管理器。这是最强大、最灵活且推荐的方法。

你需要创建一个 "service unit" 文件来告诉 systemd如何管理你的脚本。

步骤:

  1. 编写你的启动脚本:

    • 确保脚本有正确的 shebang (例如 #!/bin/bash 或 #!/usr/bin/env python3)。
    • 赋予脚本执行权限:chmod +x /path/to/your/script.sh
    • 重要:在脚本中尽量使用绝对路径来调用命令和访问文件,因为启动时的环境变量可能与你登录后不同。
    • 考虑在脚本中添加日志记录,方便排错。
    #!/bin/bash
    # /usr/local/bin/my_startup_script.sh
    
    LOG_FILE="/var/log/my_startup_script.log"
    
    echo "$(date): My startup script is running..." >> $LOG_FILE
    # 在这里添加你的命令
    # 例如:/usr/bin/python3 /opt/my_app/main.py >> $LOG_FILE 2>&1
    # 例如:/usr/sbin/another_service --config /etc/another_service.conf >> $LOG_FILE 2>&1
    echo "$(date): My startup script finished." >> $LOG_FILE
    
    exit 0
    
  2. 创建 systemd service unit 文件:

    • Unit 文件通常放在 /etc/systemd/system/ 目录下。
    • 文件名以 .service 结尾,例如 my_script.service
    # /etc/systemd/system/my_script.service
    
    [Unit]
    Description=My Custom Startup Script
    After=network.target network-online.target # 指定在网络服务启动后运行 (如果脚本需要网络)
    # Wants=network-online.target (如果只是希望网络在线,但不是硬性要求)
    
    [Service]
    Type=simple  # 或者 oneshot (如果脚本执行完就退出,不作为守护进程)
    ExecStart=/usr/local/bin/my_startup_script.sh
    User=root    # 指定运行脚本的用户,可以是普通用户,更安全
    # Group=yourgroup # 指定运行脚本的用户组
    # WorkingDirectory=/opt/my_app # 如果脚本需要特定的工作目录
    # Restart=on-failure # 如果脚本失败,可以配置自动重启
    # RestartSec=5s      # 重启前等待的时间
    # Environment="MY_VAR=some_value" # 设置环境变量
    
    [Install]
    WantedBy=multi-user.target # 表示在多用户模式下启动 (标准的服务器运行级别)
    # WantedBy=graphical.target (如果需要在图形界面启动后运行)
    

    [Unit] 部分解释:

    • Description: 服务的描述。
    • After: 定义此服务应该在哪些服务之后启动。network.target 表示网络基本配置完成,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2378246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux-进程信号的产生

Linux中的进程信号(signal)是一种用于进程间通信或向进程传递异步事件通知的机制。信号是一种软中断,用于通知进程某个事件的发生,如错误、终止请求、计时器到期等。 1. 信号的基本概念 - 信号(Signal)&am…

内容中台重构企业知识管理路径

智能元数据驱动知识治理 现代企业知识管理的核心挑战在于海量非结构化数据的有效治理。通过智能元数据分类引擎,系统可自动识别文档属性并生成多维标签体系,例如将技术手册按产品版本、功能模块、适用场景进行动态标注。这种动态元数据框架不仅支持跨部…

基于Spring Boot+Layui构建企业级电子招投标系统实战指南

一、引言:重塑招投标管理新范式 在数字经济浪潮下,传统招投标模式面临效率低、透明度不足、流程冗长等痛点。本文将以Spring Boot技术生态为核心,融合Mybatis持久层框架、Redis高性能缓存及Layui前端解决方案,构建一个覆盖招标代理…

Kali安装详细图文安装教程(文章内附有镜像文件连接提供下载)

Kali镜像文件百度网盘:通过网盘分享的文件:kali-linux-2024.2-installer-amd64.iso 链接: https://pan.baidu.com/s/1MfCXi9KrFDqfyYPqK5nbKQ?pwdSTOP 提取码: STOP --来自百度网盘超级会员v5的分享 1.下载好镜像文件后,我们打开我们的VMwa…

2.4GHz无线芯片核心技术解析与典型应用

2.4G芯片作为工作在2.4GHz ISM频段的无线通信集成电路,主要面向短距离数据传输应用。这类芯片具有以下技术特点: 多协议支持 兼容蓝牙、Wi-Fi和ZigBee等主流协议 采用SDR技术实现协议灵活切换 适用于智能家居和物联网设备 低功耗特性 采用休眠唤醒和动态…

Chrome代理IP配置教程常见方式附问题解答

在网络隐私保护和跨境业务场景中,为浏览器配置代理IP已成为刚需。无论是访问地域限制内容、保障数据安全,还是管理多账号业务,掌握Chrome代理配置技巧都至关重要。本文详解三种主流代理设置方式,助你快速实现精准流量管控。 方式一…

Linux——UDP/TCP协议理论

1. UDP协议 1.1 UDP协议格式 系统内的UDP协议结构体: 注1:UDP协议的报头大小是确定的,为8字节 注2:可以通过报头中,UDP长度将UDP协议的报头和有效载荷分离,有效载荷将存储到接收缓冲区中等待上层解析。 注…

Go语言爬虫系列教程(一) 爬虫基础入门

Go爬虫基础入门 1. 网络爬虫概念介绍 1.1 什么是网络爬虫 网络爬虫(Web Crawler),又称网页蜘蛛、网络机器人,是一种按照一定规则自动抓取互联网信息的程序或脚本。其核心功能是模拟人类浏览网页的行为,通过发送网络…

PromptIDE提示词开发工具支持定向优化啦

老粉们都知道,PromptIDE 是一款专门解决 AI 提示词生成和优化的工具,让 AI 真正听懂你在说什么,生成更符合预期的结果! 我们这次更新主要争对提示词优化这一块,推出了不同提示词优化方向,贴近用户需求。 举…

致远OA人事标准模块功能简介【附应用包百度网盘下载地址,官方售价4W】

人事管理应用,围绕岗位配置、招聘管理、员工档案、入转调离、员工自助申报、数据信息管理等人力资源管理关键业务,构建全员可参与的人事工作协同平台,让人事从繁杂琐碎的事务中解脱出来,高质高效工作,让管理层清楚掌握…

Python-简单网络编程 I

目录 一、UDP 网络程序1. 通信结构图2. Python 代码实现1)服务器端2)客户端 3. 注意 二、TCP 网络程序1. 通信结构图2. Python 代码实现1)服务器端2)客户端 3. 注意 三、文件下载1. PyCharm 程序传参1)图形化界面传参2…

鸿蒙北向应用开发: deveco5.0 创建开源鸿蒙项目

本地已经安装deveco5.0 使用5.0创建开源鸿蒙项目 文件->新建->新建项目 直接创建空项目,一路默认 next 直接编译项目 直接连接开源鸿蒙5.0开发板编译会提示 compatibleSdkVersion and releaseType of the app do not match the apiVersion and releaseType on the dev…

国产linux系统(银河麒麟,统信uos)使用 PageOffice自定义Word模版中的数据区域

​ PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(Mips、LoogArch)芯片架构。 在实际的Wor…

基于基金净值百分位的交易策略

策略来源:睿思量化小程序 基金净值百分位,是衡量当前基金净值在过去一段时间内的相对位置。以近一年为例,若某基金净值百分位为30%,意味着过去一年中有30%的时间基金净值低于当前值,70%的时间高于当前值。这一指标犹如…

2025蓝桥杯JAVA编程题练习Day8

1. 路径 题目描述 小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。 小蓝的图由 2021 个结点组成,依次编号 1 至 2021。 对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21&#xff0…

通信安全堡垒:profinet转ethernet ip主网关提升冶炼安全与连接

作为钢铁冶炼生产线的安全检查员,我在此提交关于使用profinet转ethernetip网关前后对生产线连接及安全影响的检查报告。 使用profinet转ethernetip网关前的情况: 在未使用profinet转ethernetip网关之前,我们的EtherNet/IP测温仪和流量计与PR…

DL00219-基于深度学习的水稻病害检测系统含源码

🌾 基于深度学习的水稻病害检测系统 — 智能农业的未来,守护农田的每一寸土地! 🚜 完整系统获取见文末 水稻病害检测,一直是农业领域的一大难题。传统的人工检测不仅耗时耗力,还容易因经验不足导致漏检或误…

【51单片机中断】

目录 配置流程 1.在IE寄存器中开启总中断通道和需要的某中断通道 2.在TCON寄存器开启所用中断的触发方式 3.使用中断函数完成中断 4.若需要中断嵌套则在IP寄存器中配置 5.若需要使用串口的中断,则配置SCON寄存器 6.代码示例 配置流程 1.在IE寄存器中开启总…

JavaSE基础语法之方法

方法 一、方法入门 1.方法定义 方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。 2.方法的格式 修饰符 返回值类型 方法名( 形参列表 ){方法体代码(需要执行的功能代码) }示例: public static int sum ( int a ,…

华为网路设备学习-22(路由器OSPF-LSA及特殊详解)

一、基本概念 OSPF协议的基本概念 OSPF是一种内部网关协议(IGP),主要用于在自治系统(AS)内部使路由器获得远端网络的路由信息。OSPF是一种链路状态路由协议,不直接传递路由表,而是通过交换链路…