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_service

case "$1" in
    start)
        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
        ;;
esac

exit 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.sh

exit 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.sh

exit 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/local

source /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.mfbz.cn/a/708632.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

借助ChatGPT撰写学术论文,如何设定有效的角色提示词指

大家好,感谢关注。这个给大家提供关于论文写作方面专业的讲解,以及借助ChatGPT等AI工具如何有效辅助的攻略技巧。有兴趣的朋友可以添加我(yida985)交流学术写作或ChatGPT等AI领域相关问题,多多交流,相互成就…

msvcp140.dll安装步骤,教你解决msvcp140.dll丢失的多种靠谱解决方法

一、msvcp140.dll文件丢失或损坏的影响 1 程序启动问题 当msvcp140.dll文件丢失或损坏时,最直接的后果是依赖于此DLL文件的程序无法正常启动。例如,Adobe系列软件、Microsoft Office套件、Steam游戏平台等,这些软件在启动时如果检测到msvcp…

记录open62541简单有效的编译生成.c和.h文件【OPCUA开源库】

一、下载和安装CMake 虽然说可以通过下面命令安装CMake,但是安装CMake时,通常会安装来自你的操作系统的软件仓库中的版本,这个版本可能不是最新的 sudo apt-get install cmake 如果安装后发现CMake版本低于CMake 3.13是没有办法进行编译的 接下来通过编译源码来升级高版本…

【荷包支付-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …

14.shell awk数组

awk数组 awk数组awk数组示例Nginx日志分析 awk数组 1.什么是awk数组 数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值 2.awk数组应用场景 通常用来统计、比如:统计网站访问TOP10、网站url访问TOP10等等 3.awk数组统计技巧 1.在awk中,使用数组时,不仅可以…

PostgreSQL 14.2 安装教程

第一章 PostgreSQL安装 1.1 新建/opt/tools目录 mkdir -p /opt/tools 1.2 上传postgresql文件 1.3 解压postgresql文件 tar -zxvf postgresql-14.2.tar.gz 1.4 进入postgresql并配置 cd postgresql-14.2 mkdir -p /opt/app/postgresql ./configure --prefix/opt/app/postg…

“探索机器学习的多面世界:从理论到应用与未来展望“

博客主页:誓则盟约系列专栏:机器学习 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 目录 一、机器学习基础理论 1.机器学习的定义与分类 监督学习 无监督学…

英格索兰IC12D3A1AWS-A控制器过热维修

在现代工业生产中,拧紧控制器作为一种自动控制工具,被广泛应用于汽车、航空、电子等领域。然而,在使用过程中,可能会出现IngsollRang拧紧控制器过热故障,影响生产效率和产品质量。 【拧紧设备维修】【英格索兰IngsollR…

js: 百度云BOS 分片上传

百度云BOS存储后怎么查看或下载呢? // 1) 查看登录到百度智能云控制台 – 对象存储BOS”服务–选择一个Bucket,进入后可以查看该Bucket下的所有文件和文件夹。 2)下载OS浏览器端不支持批量下载,可以通过以下方式下载文件(使用BOS桌…

VirtualBox、Centos7下安装docker后pull镜像问题

Docker安装篇(CentOS7安装)_docker 安装 centos7-CSDN博客 首先,安装docker可以根据这篇文章进行安装,安装完之后,我们就需要去通过docker拉取相关的服务镜像,然后安装相应的服务容器,比如我们通过docker来安装mysql,…

工业烤箱设备厂家:专业制造,助力工业发展

随着现代工业的不断发展,工业烤箱设备在各个领域的应用越来越广泛。作为专业的工业烤箱设备厂家,我们致力于为客户提供高质量、高效率的烤箱设备,助力工业生产的顺利进行。 工业烤箱设备在工业生产中扮演着至关重要的角色。无论是电子、化工、…

Web应用安全测试-业务逻辑缺陷

Web应用安全测试-业务逻辑缺陷 密码修改/重置流程跨越 漏洞描述:密码修改功能常采用分步骤方式来实现,攻击者在未知原始密码的情况下绕过某些检验步骤修改用户密码。 测试方法: 完成修改/重置密码的正常流程;绕过检…

机器视觉:光源的类型以及主要参数

光源在机器视觉中起着决定性的作用,决定了视觉算法的复杂性,也决定了视觉系统的精度和稳定性。光源用于突出目标物体的特征,增加目标物体与背景的对比度,克服环境光线的干扰。光源的选择与打光方式在视觉系统的前期评估中非常重要…

自然语言处理领域的重大挑战:解码器 Transformer 的局限性

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

frp55版本如何配置泛域名

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 之前配置的好好的frp,结果到用的时候不能用了,直接影响了我早上的一堆rss订阅源不能用,群里的新闻简报也没有正常推送,今天又翻出来捋…

如何将NextJs中的File docx保存到Prisma ORM

背景/引言 在现代 Web 开发中,Next.js 是一个备受欢迎的 React 框架,它具有许多优点,如: 服务器端渲染 (SSR):Next.js 支持服务器端渲染,可以提高页面加载速度,改善 SEO,并提供更好…

计算机网络 —— 运输层(UDP和TCP)

计算机网络 —— 运输层(UDP和TCP) UDPTCPUDP和TCP的异同点相同点不同点 我们今天来看运输层的两个重要的协议——UDP和TCP UDP UDP,全称为用户数据报协议(User Datagram Protocol),是互联网中一种核心的…

Day07-06_13【CT】LeetCode手撕—1. 两数之和

目录 题目1-思路2- 实现⭐1. 两数之和——题解思路 3- ACM实现 题目 原题连接:1. 两数之和 1-思路 哈希表 利用哈希表存储 key 数组元素值 ——> value 数组下标遍历数组 2- 实现 ⭐1. 两数之和——题解思路 class Solution {public int[] twoSum(int[] nums…

【MySQL】E-R图-关系数据模型-3NF--精讲+练习(巨全面)

一.知识储备 E-R图 E-R图,即实体-关系图(Entity-Relationship Diagram),是数据库建模的一种工具,用于表示实体类型、属性以及它们之间的关系。 在E-R图中,实体用矩形表示,属性用椭圆表示&…

【精品方案】离散型制造行业智能工厂标准解决方案(49页 PPT)

引言:随着科技的不断进步和制造业的转型升级,离散型制造行业正面临着从传统制造向智能制造转型的迫切需求。离散型制造行业涉及的产品种类繁多,生产流程复杂,对生产效率、产品质量和成本控制有着极高的要求。因此,开发…