Linux开机自启/etc/init.d和/etc/rc.d/rc.local

文章目录

    • /etc/init.d和/etc/rc.d/rc.local的区别
    • /etc/init.d
    • systemd介绍

/etc/init.d和/etc/rc.d/rc.local的区别

目的不同:
/etc/rc.d/rc.local:用于在系统启动后执行用户自定义命令,适合简单的启动任务。
/etc/init.d:用于管理系统服务的启动、停止和重启,提供更细粒度的服务管理。
执行时机:
rc.local 在所有其他服务启动完成后执行。
/etc/init.d 中的脚本根据运行级别在启动过程中按需执行。
复杂度和灵活性:
rc.local 更简单,适合不需要复杂管理的任务。
/etc/init.d 提供更强大的服务管理功能,适合需要精确控制的系统服务。
随着 systemd 的普及,新的系统通常使用 systemd 服务单元文件来替代传统的 init.d 脚本,但对 rc.local 的支持仍然保留作为一种便捷的方式来执行启动任务。

/etc/init.d

/etc/rc.d/rc.local 和 /etc/init.d 是 Linux 系统中与启动和服务管理相关的两个不同路径。它们在实现和用法上有显著差异。以下是它们的详细区别和各自用途:

  1. 服务管理脚本:/etc/init.d 目录包含了系统初始化脚本和服务管理脚本。这些脚本用于启动、停止、重启和检查系统服务的状态。
  2. 服务控制:每个脚本通常实现 start、stop、restart 和 status 等功能,用于管理特定服务。通过这些脚本,系统管理员可以方便地控制服务的生命周期。
  3. 与运行级别关联:这些脚本通常与系统的运行级别(runlevel)紧密关联。在传统的 SysVinit 系统中,不同的运行级别代表系统的不同状态(如单用户模式、多用户模式等),并决定哪些服务应该在启动时运行。
  4. 与 systemd 的关系:在现代使用 systemd 的系统中,/etc/init.d 目录仍然存在以保持向后兼容,但 systemd 的服务单元文件(*.service)已经成为管理服务的主要工具。
    示例服务脚本
    例如,一个服务脚本可能如下:
#!/bin/sh
# /etc/init.d/my_servicecase "$1" instart)echo "Starting my_service"# Start command for my_service;;stop)echo "Stopping my_service"# Stop command for my_service;;restart)echo "Restarting my_service"# Restart command for my_service;;status)echo "Checking status of my_service"# Status command for my_service;;*)echo "Usage: /etc/init.d/my_service {start|stop|restart|status}"exit 1;;
esacexit 0

/etc/rc.d/rc.local
在很多 Linux 系统中,/etc/rc.d/rc.local 文件是一个用于在系统启动时执行自定义命令和脚本的文件。这种机制在传统的 SysVinit 系统中非常常见。虽然许多现代 Linux 系统已经转向使用 systemd,但仍有一些系统维护对 rc.local 的支持,或者通过兼容层来支持它。
以下是如何使用和编辑 /etc/rc.d/rc.local 文件来添加启动脚本的步骤:
主要特点

  1. 启动脚本:/etc/rc.d/rc.local 是一个脚本文件,用于在系统启动过程中执行用户自定义命令或脚本。它通常用于执行一些简单的初始化任务,如启动特定的应用程序、设置系统参数等。
  2. 执行时机:rc.local 脚本通常在所有其他初始化脚本和服务启动完成后才执行。这意味着它在系统的最后阶段运行,确保所有必要的系统服务和资源都已就绪。
  3. 兼容性:在使用 SysVinit 的传统 Linux 发行版中,这个文件比较常见。对于使用 systemd 的现代发行版,虽然直接支持 rc.local 的情况减少,但可以通过创建 rc-local 服务单元来继续使用。
    示例内容
#!/bin/sh
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full SysV style init stuff.echo "Starting custom tasks"# Custom commands or scripts
/path/to/custom/script.shexit 0
  1. 确保 rc.local 可用
    首先,确保系统支持并启用了 rc.local。在一些基于 systemd 的系统中,可能需要启用 rc-local 服务。
    检查 rc-local 服务状态
    sudo systemctl status rc-local
    如果服务未启用或不存在,你可以创建相应的服务文件:
    创建 rc-local 服务文件(适用于 systemd 系统)
  2. 创建文件 /etc/systemd/system/rc-local.service 并编辑:
    sudo nano /etc/systemd/system/rc-local.service
  3. 添加以下内容:
    [Unit]
    Description=/etc/rc.local Compatibility
    ConditionPathExists=/etc/rc.d/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

  1. 保存并退出编辑器。
  2. 使服务文件生效,并启用和启动 rc-local 服务:
    sudo chmod +x /etc/rc.d/rc.local
    sudo systemctl enable rc-local
    sudo systemctl start rc-local
  3. 编辑 rc.local 文件
  4. 打开 /etc/rc.d/rc.local 文件:
    sudo nano /etc/rc.d/rc.local
  5. 在文件中添加你希望在系统启动时执行的命令或脚本。在大多数系统中,你需要确保文件以 #!/bin/sh 开头,并在结尾返回退出状态码 0。例如:
#!/bin/sh
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full SysV style init stuff.# Print the date to a log file
echo "System started at $(date)" >> /var/log/rc.local.log# Start a custom service or script
/path/to/your/custom/script.shexit 0
  1. 保存并退出编辑器。
  2. 设置执行权限
    确保 /etc/rc.d/rc.local 文件具有可执行权限:
    sudo chmod +x /etc/rc.d/rc.local
    验证
    重新启动系统并检查是否执行了 rc.local 中的命令。例如,如果你将日志记录到 /var/log/rc.local.log,可以查看该日志文件以验证脚本是否正确执行。
    cat /var/log/rc.local.log
    通过这些步骤,你可以在系统启动时执行自定义脚本和命令,从而实现自动化配置和服务启动。尽管 systemd 已经成为主流,但对许多人来说,/etc/rc.d/rc.local 仍然是一个非常方便和熟悉的工具。

项目max-am实战
/etc/rc.d/rc.local

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.touch /var/lock/subsys/localsource /etc/profile# ES start
su - es -c '/opt/elasticsearch-7.10.2/bin/elasticsearch -d'# redis start
/opt/redis-7.0.12/redis_start.sh# mysql start
/opt/mysql/bin/mysqld_safe &# rabbitmq start
nohup /opt/rabbitmq_server-3.7.16/sbin/rabbitmq-server –detached > /dev/null &
# zookeeper start
/opt/zookeeper/zookeeper.sh start &

在这里插入图片描述

systemd介绍

systemd 是一个用于管理 Linux 操作系统中的系统和服务启动的系统和服务管理器。它被设计为取代传统的 SysVinit 系统,旨在提供更快的启动时间、并行启动能力和更好的系统管理功能。systemd 已经成为许多主流 Linux 发行版的默认初始化系统,包括 Red Hat Enterprise Linux、Fedora、Debian 和 Ubuntu 等。
主要特点
下面是 systemd 的一些主要特点:

  1. 并行启动:systemd 可以并行启动系统中的各个服务,而不像传统的 SysVinit 需要按顺序依次启动每个服务,从而大大缩短了启动时间。
  2. 自动化任务管理:systemd 使用单元文件来描述系统中的各种任务和服务,这些单元文件可以很容易地配置启动、停止、重启和状态检查等操作。
  3. 集成性:systemd 提供了广泛的功能,包括日志记录、用户会话管理、挂载点管理等,使得它成为一个全面的系统和服务管理解决方案。
  4. 可靠性:由于其对 Linux 系统的深度整合,systemd 能够更可靠地处理系统启动和服务管理,同时提供更多的故障排除和监控功能。
    systemd 单元
    在 systemd 中,系统中的各种任务和服务都被表示为单元。这些单元可以是服务单元(*.service)、挂载点单元(*.mount)、设备单元(*.device)、定时器单元(*.timer)等等。每个单元都有一组属性,用来描述其行为和依赖关系。
    与传统的 SysVinit 的比较
    相对于传统的 SysVinit,systemd 具有以下优势:
  • 更快的启动时间
  • 更好的并行性
  • 更灵活的任务和服务管理
  • 更强大的故障排除和监控能力
    总结
    在系统管理员和开发者的角度看,systemd 是一个功能强大、高效的系统和服务管理器,为 Linux 系统带来了许多现代化的特性和改进。它已经成为许多流行的 Linux 发行版的标准初始化系统,对于新的 Linux 系统来说,系统管理员通常需要熟悉并掌握 systemd 的使用和配置。

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

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

相关文章

实现一个vue js小算法 选择不同的时间段 不交叉

以上图片选择了时间段 现在需要判断 当前选择的时间段 不能够是 有交叉的所以现在需要循环判断 //判断时间段是否重叠交叉 export function areIntervalsNonOverlapping(intervals:any) {// 辅助函数:将时间字符串转换为从当天午夜开始计算的分钟数function conver…

信息系统架构风格-系统架构师(十

1、信息系统架构风格是描述特定应用领域中系统组织方式的惯用模式。架构风格定义了一个系统家族,即一个架构定义()。 A一组设计原则 B一组模式 C一个词汇表和一组约束 D一组最佳实践 解析: 信息系统架构风格是描述某一特定 应…

汽车金属管检测新方法,分度盘高速视觉检测机检测效果如何?

汽车金属管是指在汽车制造和维修中广泛使用的金属管道,用于传输流体、气体或其他介质。汽车金属管在汽车中扮演着重要的角色,用于传输液体(如燃油、冷却液、润滑油)、气体(如空气、排气)、制动系统、液压系…

详解函数动态调用的作用——call

动态调用的作用 类似于其他语言的反射能够开发框架性代码 Call调用语法 (bool success, bytes data) <address>.call(bytes calldata)call是address的方法call返回值(bool success, bytes data)忽视返回值success&#xff0c;会造成严重问题 calldata的结构 call的…

183.二叉树:二叉搜索树中的众数(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

Linux2(文件类型分类 基本命令2 重定向)

目录 一、文件类型分类 二、基本命令2 1. find 帮助查询 2. stat 查看文件的信息 3. wc 统计文本 4. 查看文本内容 4.1 cat 4.2 more 4.3 less 4.4 head 4.5 tail 5. cal 显示日历 6. date 显示时间 7. du 文件大小 8. ln 链接 软链接 硬链接 区别 9. histo…

碳中和研究院OLED透明屏2x2整机项目方案

一、项目背景 随着全球气候变化和环境问题的日益严重&#xff0c;碳中和成为各国政府和企业的重要议题。为了响应这一趋势&#xff0c;黑龙江碳中和研究院计划引入先进的OLED透明屏技术&#xff0c;以展示其研究成果和碳中和理念。本项目旨在为该研究院提供一套高质量的OLED透明…

关于Mysql 中 Row size too large (> 8126) 错误的解决和理解

提示&#xff1a;啰嗦一嘴 &#xff0c;数据库的任何操作和验证前&#xff0c;一定要记得先备份&#xff01;&#xff01;&#xff01;不会有错&#xff1b; 文章目录 问题发现一、问题导致的可能原因1、页大小2、行格式2.1 compact格式2.2 Redundant格式2.3 Dynamic格式2.4 Co…

vmmare虚拟机没有被分配ip地址问题;NAT模式下一直变化问题

打开任务管理器–>服务–>找到与VM和server相关的服务 发现NAT和DHCP服务被关闭了 尝试启动&#xff0c;报错 尝试一 虚拟网络编辑器点击还原默认设置 尝试二 可以了 ip变化 更改租用时长

性能测试常见的内存溢出问题: JVM 内存溢出如何调优?

针对java项目做性能测试的时候,很多同学都见过一个报错,就是OOM【Out Of MemoryError】;那出现这种报错就是项目发生了内存溢出的问题,这是比较严重的性能问题。所以,作为一个性能测试工程师,我们要能够分析JVM内存的问题以及理解其中的原理,才能更好的给JVM内存出现的性…

Wireless Network(百练,POJ)

题目链接: http://bailian.openjudge.cn/tm2019/F/ 2236 -- Wireless Network 题面描述: 思路: 这题开了10s&#xff0c;所以可以暴力点&#xff0c;每次修复一个点&#xff0c;就将该点相连的那些边建出来&#xff0c;总的时间复杂度为: O(nm)。关键在于如何判定两个点是否…

新能源汽车不安全?新能源汽车测试之方案篇——充电桩综合测试

背景 随着全球对气候变化和环境污染问题的日益加剧&#xff0c;新能源汽车作为一种环保、节能的交通工具备受关注。其发展背景主要源于对环境问题的关注以及对传统燃油汽车依赖的减少。新能源汽车的出现&#xff0c;带来了减少尾气排放、节能减排、保护环境等多方面的优点&…

【STM32】uc/OS-III多任务程序

目录 一、背景介绍二、UCOS-III简单介绍&#xff08;一&#xff09;源码&#xff08;二&#xff09;功能 三、实验&#xff08;一&#xff09;基于STM32CubeMX建立工程1、创建项目2、配置项目 &#xff08;二&#xff09;实现 四、总结五、参考 一、背景介绍 学习嵌入式实时操…

《精通ChatGPT:从入门到大师的Prompt指南》第7章:创意写作

第7章&#xff1a;创意写作 7.1 角色设定 角色设定是创意写作中最关键的环节之一。成功的角色设定能够让读者对故事产生共鸣&#xff0c;使故事更加生动有趣。角色不仅仅是情节发展的载体&#xff0c;更是读者情感的投射对象。因此&#xff0c;深入了解如何设定一个生动而有深…

【React】json-server

1.安装到开发环境 npm install json-server -D2.在根目录下下&#xff0c;新建db.json文件 {"list": [{"rpid": 3,"user": {"uid": "13258165","avatar": "http://toutiao.itheima.net/resources/images/9…

Go Module详解

文章目录 基本介绍相关环境变量Go Module的使用初始化项目&#xff08;go mod init&#xff09;管理依赖项&#xff08;go mod edit&#xff09;获取依赖项&#xff08;go mod download&#xff09;整理依赖项&#xff08;go mod tidy&#xff09;导入vendor目录&#xff08;go…

【DevOps】Ubuntu基本使用教程

目录 引言 Ubuntu简介 安装Ubuntu 准备工作 创建启动盘 安装过程 桌面环境 基本操作 定制桌面 文件管理 文件操作 文件权限 软件管理 安装软件 更新软件 系统设置 用户账户 网络设置 电源管理 命令行操作 常用命令 管理权限 安全与维护 系统更新 备份…

傲星一个在线工具箱源码附搭建教程

傲星工具箱源码是一款功能强大的在线工具箱程序&#xff0c;您可以通过安装扩展来增强其功能。同时&#xff0c;该程序还提供了插件模板的功能&#xff0c;让您可以将其作为网页导航使用。 1.PHP版本需不低于7.2.5。 2.Mysql版本需不低于5.7。 3.需要安装fileinfo扩展。 4.…

蓝牙音频解码芯片TD5163介绍,支持红外遥控—拓达半导体

蓝牙芯片TD5163A是一颗支持红外遥控、FM功能和IIS音频输出的蓝牙音频解码芯片&#xff0c;此颗芯片的亮点在于同时支持真立体声&单声道、TWS功能、PWM、音乐频谱和串口AT指令控制等功能&#xff0c;芯片在支持蓝牙无损音乐播放的同时&#xff0c;还支持简单明了的串口发送A…

idea有这个类却报红,无法用快捷键找到

idea有这个类却报红&#xff0c;无法用快捷键找到&#xff0c;但是项目启动却没有任何问题&#xff0c;严重影响到了开发效率&#xff0c;关idea 重新打开没有用。 找了一圈&#xff0c;办法如下&#xff1a; 1、点击左上角的 File—>Invalidate Caches/Restar 2、点击 In…