码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • CentOS7如何设置开机自启动程序、开机自启动脚本?


    文章目录

      • 1、把启动程序的命令添加到`/etc/rc.d/rc.local`文件中
        • CentOS7.9里的`/etc/rc.local`文件
        • 注意:`/etc/rc.d/rc.local`可能没有可执行权限,请检查并添加!!!
        • 注意:`/etc/rc.d/rc.local`可能是跟其他服务并行执行的,如果你需要在此脚本运行在某个服务启动之后才能运行的“东西”,你需要在那个“东西”上做个判断,判断所依赖的服务是否已经启动,或者添加睡眠延时,等待这个服务启动完成
      • 2、把写好的启动脚本添加到目录`/etc/rc.d/init.d/`,然后使用命令`chkconfig`设置开机启动。
        • 示例1:设置自启动mysql
        • 示例2:设置自启动httpd
      • 3、把启动程序的命令添加到`/etc/rc.d/rc.sysinit` 文件中
        • 示例:设置自启动apache
      • 我们的prj
        • 尝试方案1

    在CentOS系统下,主要有三种方法设置自己安装的程序开机启动。

    1、把启动程序的命令添加到/etc/rc.d/rc.local文件中

    /etc/rc.d/rc.local 用于添加开机启动命令
    /etc/rc.local是/etc/rc.d/rc.local的软连接

    比如下面的是设置开机启动httpd。

    打开rc.local文件,在文件最后添加/usr/local/apache/bin/apachectl start:

    #!/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 Sys V style init stuff.
    
    #该脚本将在所有其他初始化脚本之后执行。
    #如果你不想做完整的 Sys V 风格的初始化东西,你可以把你自己的初始化东西放在这里。
     
    touch /var/lock/subsys/local
    
    /usr/local/apache/bin/apachectl start
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    CentOS7.9里的/etc/rc.local文件

    [root@localhost init.d]# cat /etc/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.
    
    # 此文件是出于兼容性目的而添加的
    #
    # 强烈建议创建自己的 systemd 服务或 udev 规则以在引导期间运行脚本,而不是使用此文件。
    #
    # 与以前的版本相比,由于在引导期间并行执行,此脚本不会在所有其他服务之后运行。
    #
    # 请注意,您必须运行 'chmod +x /etc/rc.d/rc.local' 以确保此脚本将在启动期间执行。
    
    touch /var/lock/subsys/local
    [root@localhost init.d]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    注意:/etc/rc.d/rc.local可能没有可执行权限,请检查并添加!!!

    注意,这个文件可能没有可执行权限,导致centos启动时这个脚本没法启动,请用chmod 777 /etc/rc.d/rc.local给这个脚本赋权限(不要给那个软链接/etc/rc.local赋权限!!!)

    参考文章:解决问题:/etc/rc.local文件配置的开机启动项不生效

    注意:/etc/rc.d/rc.local可能是跟其他服务并行执行的,如果你需要在此脚本运行在某个服务启动之后才能运行的“东西”,你需要在那个“东西”上做个判断,判断所依赖的服务是否已经启动,或者添加睡眠延时,等待这个服务启动完成

    2、把写好的启动脚本添加到目录/etc/rc.d/init.d/,然后使用命令chkconfig设置开机启动。

    chkconfig 功能说明:检查,设置系统的各种服务。
    
    
    语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
    
    --add 添加服务
    
    --del 删除服务
    
    --list 查看各服务启动状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    示例1:设置自启动mysql

    将mysql启动脚本放入所有脚本运行目录 /etc/rc.d/init.d中

    cp /lamp/mysql-5.0.41/support-files/mysql.server /etc/rc.d/init.d/mysqld
    
    • 1

    改变所有者

    chown root.root /etc/rc.d/init.d/mysqld
    
    • 1

    所有用户都可以执行,但只有root可以修改

    chmod 755 /etc/rc.d/init.d/mysqld
    
    • 1

    将mysqld 放入linux启动管理体系中

    chkconfig --add mysqld
    
    • 1

    查看全部服务在各运行级状态

    chkconfig --list mysqld
    
    • 1

    只要运行级别3启动,其他都关闭

    chkconfig --levels 245 mysqld off
    
    • 1

    示例2:设置自启动httpd

    把httpd的脚本写好后放进/etc/rc.d/init.d/目录

    chkconfig --add httpd
    chkconfig httpd on
    
    • 1
    • 2

    命令即设置好了开机启动。

    3、把启动程序的命令添加到/etc/rc.d/rc.sysinit 文件中

    脚本/etc/rc.d/rc.sysinit,完成系统服务程序启动,如系统环境变量设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等

    示例:设置自启动apache

    echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.sysinit
    
    • 1

    上述命令相当于在/etc/rc.d/rc.sysinit文件末尾追加/usr/local/apache2/bin/apachectl start,当然也可手动打开文件编辑

    参考文章:CentOS设置程序开机自启动的方法

    我们的prj

    尝试方案1

    我们要让/root/kyai/exec_container.sh这个脚本在centos7开机的时候自启动

    先备份一下/etc/rc.d/rc.local

    cp /etc/rc.d/rc.local /etc/rc.d/rc.local.bak
    
    • 1

    然后再执行

    echo "/root/kyai/exec_container.sh" >> /etc/rc.d/rc.local
    
    • 1

    然后查看一下,已经写进去了

    在这里插入图片描述

    然后我们重启一下centos看看这个脚本能不能把服务拉起来

    试了一下,我又给这个命令加了输出日志文件的功能,参考文章:Linux bash输出带日期时间的日志文件

    发现这个脚本压根没运行。。。。。(不知道是不是我操作姿势有误,我是以root用户进来的)

    。。。

    后来发现原来是脚本没可执行权限。。。。。加上就好了,能自动运行

  • 相关阅读:
    Qt 画自定义饼图统计的例子
    即时通讯开发技术--iOS Push技术分享帖
    设计模式再探——原型模式
    深度学习资源列表
    【斗罗二】再度魔改,弓老被删,冰帝武魂提前曝光,官方经费已不足
    重定向转发,接收请求参数及数据回显-P11,12
    百度SEO优化TDK介绍(分析下降原因并总结百度优化SEO策略)
    uniapp、vue实现滑动拼图验证码
    微软大中华区商业应用事业部高级产品经理张诗源,将出席“ISIG-低代码/零代码技术与应用发展峰会”
    深度解析:什么是太爱速M抢单模式?
  • 原文地址:https://blog.csdn.net/Dontla/article/details/125333850
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号