linux开机启动

2023-05-16

 

linux有自己一套完整的启动体系,抓住了 linux启动的脉络, linux的启动过程将不再神秘。
阅读之前建议先看一下附图。

本文中假设inittab中设置的init tree为:
/etc/rc.d/rc0.d
/etc/rc.d/rc1.d
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc/rc.d/rc6.d
/etc/rc.d/init.d


1. 关于 linux的启动
2. 关于rc.d
3. 启动脚本示例
4. 关于rc.local
5. 关于bash启动脚本
6. 关于开机程序的自动启动


1. 关于linux的启动
  • init是所有进程之父
  • init读取/etc/inittab,执行rc.sysinit脚本
    (注意文件名是不一定的,有些unix甚至会将语句直接写在inittab中)
    rc.sysinit脚本作了很多工作:

    init $PATH
    config network
    start swap
    set hostname
    check root file system, repair if needed
    check root space
    ....
  • rc.sysinit根据inittab执行rc?.d脚本
  • linux是多用户系统,getty是多用户与单用户的分水岭
    在getty之前运行的是系统脚本

2. 关于rc.d
  • 所有启动脚本放置在 /etc/rc.d/init.d下
  • rc?.d中放置的是init.d中脚本的链接,命名格式是:
    S{number}{name}
    K{number}{name}
    S开始的文件向脚本传递start参数
    K开始的文件向脚本传递stop参数
    number决定执行的顺序

3. 启动脚本示例

这是一个用来启动httpd的 /etc/rc.d/init.d/apache 脚本:
代码:
#!/bin/bash

source /etc/sysconfig/rc
source $rc_s

case "$1" in
        start)
                echo "Starting Apache daemon..."
                /usr/local/apache2/bin/apachectl -k start
                evaluate_retval
                ;;

        stop)
                echo "Stopping Apache daemon..."
                /usr/local/apache2/bin/apachectl -k stop
                evaluate_retval
                ;;

        restart)
                echo "Restarting Apache daemon..."
                /usr/local/apache2/bin/apachectl -k restart
                evaluate_retval
                ;;

        status)
                statusproc /usr/local/apache2/bin/httpd
                ;;
               
        *)
                echo "Usage: $0 {start|stop|restart|status}"
                exit 1
                ;;
esac
可以看出他接受start,stop,restart,status参数

然后可以这样建立rc?.d的链接:
代码:
cd /etc/rc.d/init.d &&
ln -sf ../init.d/apache ../rc0.d/K28apache &&
ln -sf ../init.d/apache ../rc1.d/K28apache &&
ln -sf ../init.d/apache ../rc2.d/K28apache &&
ln -sf ../init.d/apache ../rc3.d/S32apache &&
ln -sf ../init.d/apache ../rc4.d/S32apache &&
ln -sf ../init.d/apache ../rc5.d/S32apache &&
ln -sf ../init.d/apache ../rc6.d/K28apache


4. 关于rc.local

经常使用的 rc.local 则完全是习惯问题,不是标准。
各个发行版有不同的实现方法,可以这样实现:
代码:
touch /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc1.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc2.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc3.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc4.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc5.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc6.d/S999rc.local


5. 关于bash启动脚本

/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
是bash的启动脚本

一般用来设置单用户的启动环境,也可以实现开机单用户的程序,但要明确他们都是属于bash范畴而不是系统范畴。

他们的具体作用介绍如下:

/bin/bash这个命令解释程序(后面简称shell)使用了一系列启动文件来建立一个运行环境:

/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
~/.bash_logout

每一个文件都有特殊的功用并对登陆和交互环境有不同的影响。
/etc/profile 和 ~/.bash_profile 是在启动一个交互登陆shell的时候被调用。
/etc/bashrc 和 ~/.bashrc 是在一个交互的非登陆shell启动的时候被调用。
~/.bash_logout 在用户注销登陆的时候被读取

一 个交互的登陆shell会在 /bin/login 成功登陆之后运行。一个交互的非登陆shell是通过命令行来运行的,如[prompt]$/bin/bash。一般一个非交互的shell出现在运行 shell脚本的时候。之所以叫非交互的shell,是因为它不在命令行上等待输入而只是执行脚本程序。


6. 关于开机程序的自动启动
  • 系统脚本可以放置在/etc/rc.d/init.d中并建立/etc/rc.d/rc?.d链接,也可以直接放置在/etc/rc.d/rc.local中。
    init.d脚本包含完整的start,stop,status,reload等参数,是标准做法,推荐使用。
  • 为特定用户使用的程序(如有的用户需要使用中文输入法而有的不需要)放置在~/中的bash启动脚本中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux开机启动 的相关文章

  • konsole快捷键

    Tab xff1a 自动补全 Ctrl b xff1a 向前移动 xff0c 相当于 lt Left gt Ctrl f xff1a 向后移动 xff0c 相当于 lt Right gt Alt b xff1a 按词向前移动 Alt f x
  • docker中安装了RabbitMQ后无法访问其Web管理页面

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在官网找了 34 docker run d hostname my rabbit name some rabbit p 8080 15672 rabbitmq 3 mana
  • 网络数据包捕获函数库Libpcap安装与使用(非常强大)

    1 Libpcap简介 Libpcap是Packet Capture Libray的英文缩写 xff0c 即数据包捕获函数库 该库提供的C函数接口用于捕捉经过指定网络接口的数据包 xff0c 该接口应该是被设为混杂模式 这个在原始套接子中有
  • STM32F103控制两个步进电机按照一定转速比运动

    这个暑假没有回家 xff0c 在学校准备九月份的电子设计竞赛 今天想给大家分享一下STM32定时器控制两个步进电机按照一定速度比转动的问题 这次做的05年的电子设计竞赛题目 xff0c 运动悬挂系统 本实验是控制两个步进电机通过一个定滑轮用
  • Android 编程下的 Secret Code

    我们很多人应该都做过这样的操作 xff0c 打开拨号键盘输入 4636 等字符就会弹出一个界面显示手机相关的一些信息 xff0c 这个功能在 Android 中被称为 Android Secret Code xff0c 除了这些系统预置的
  • 用vim格式化代码

    格式化全文 xff1a gg 61 G 自动缩进当前行 xff1a 61 61 这个是原文节选 xff1a 14 6 How do I format indent an entire file You can format indent a
  • C# 之 反射性能优化3

    阅读目录 开始用Delegate优化反射的缺点用Delegate优化反射的优点用CodeDOM优化反射的优点如何用好CodeDOM xff1f 用CodeDOM优化反射的缺点能不能不使用委托 xff1f 根据反射密集程度选择优化方法Code
  • 基于用户行为的视频聚类方案

    在个性化推荐系统中 xff0c 通常是由挖掘物品属性来理解用户兴趣 xff0c 从而构建推荐模型 从用户行为去理解物品属性往往做得比较简单 xff0c 通常只是一些简单的标签统计 为了深入到用户行为去理解内容 xff0c 美拍利用用户的点击
  • .html文件调用接口示例

    直接在 html文件中请求接口的写法示例 span class hljs meta lt DOCTYPE html gt span span class hljs tag lt span class hljs name html span
  • mac os 环境下配置VMware Fusion虚拟机的互通网络

    安装环境 本文基于macOS Sierra 10 12 6系统为例 虚拟机应用VMware Fusion 10 1 3 系统Linux redhat 镜像rhel server 7 4 x86 64 dvd iso VMware Fusio
  • webpack的proxyTable无效的解决方案

    最近遇到这个需要单页访问跨域后台的问题 遇到了网上很多人说的 xff0c proxyTable无论如何修改 xff0c 都没效果的现象 经过几轮测试 xff0c 总结出一下几种解决方案 xff1a 1 xff08 非常重要 xff09 确保
  • 单个LottieAnimationView加载不同的lottie动画

    需求 最近做了一个单个LottieAnimationView根据用户点击选项的不同 xff0c 加载不同的lottie动画的需求 网上的一些demo和博客大多只是单独的加载一个lottie动画 xff0c 普遍不会有问题 xff0c 但是如
  • 使用element-ui中的table中的合计行的show-summary方法总结

    表尾结束景行统计的的问题 使用show summary 和 summary method 61 34 getSummaries 34 这两个方法搭配使用 逻辑处理 在最后必须使用return 出去就行 其中的逻辑可以自行定制 实现后达到的效
  • 如何下载网页所有资源(附源码)

    nodejs扒取html页面中所有链接资源 前言 xff1a 总有些人 xff0c 想下载一个插件 xff0c 能直接获取浏览器显示页面的所有资源 也就是下载一个其他人的网站 xff0c 但是不想一个个复制链接的内容 xff0c 原因大致有
  • Python 实现简单的登录注册界面

    Python 实现简单的登录注册界面 注意 xff1a 编写代码之前需要导入很重要的包 import tkinter as tk import pickle from tkinter import messagebox 主要实现的功能 首先
  • VC窗口抖动源码

    窗口抖动实例 CPoint CurrentPos 抖完还要回到这个位置 xff0c 不要乱跑 CRect rect 这一段计算主要是为了满足SetWindowPos 的参数要求 不解释吧 GetClientRect amp rect Cli
  • Ubuntu编译驱动程序的准备(转)

    ubuntu不带linux内核源码 xff0c 需要自己下载安装 1 xff0c 查看自己的内核版本 uname r 2 xff0c 查看源内的内核源码类表 apt cache search linux source 3 xff0c 下载安
  • 树莓派练习程序(雨水检测)

    水滴检测模块如下 xff1a 树莓派的引脚如下图 xff1a 我们将Vcc引脚连接物理接口2 xff0c GND引脚连接物理接口39 xff0c DO引脚连接物理接口40 实物连接如下图 xff1a 编程使用WiringPi库 xff0c
  • 从C# 3.0说以人为本(三)—— 扩展方法

    说完了LINQ的语言支持和语法灵活 xff0c 下面就是一个非常有用的东东 扩展方法 xff08 Extension Method 还记得我们看了好几遍的LINQ吧 xff0c 下面这个 xff1a var numQuery 61 from
  • linux下查看用户及用户组的方法

    linux下查看用户及用户组的方法 whois 功能说明 xff1a 查找并显示用户信息 语 法 xff1a whois 帐号名称 补充说明 xff1a whois指令会去查找并显示指定帐号的用户相关信息 xff0c 因为它是到Networ

随机推荐