Linux 启动脚本 完全注释 1 -- 整体流程

2023-11-14

      Linux太伟大了,什么东西都可以由你来做主,Linux加载完内核后,所有的其他系统服务,进程,都是靠脚本来加载的。所以Linux是这么的透明,你可以清除的指导你的系统做了什么。
     下面我就对Linux的启动脚本做了注释,该脚本是属于LFS的,因为该系统比较小,所以可以很清楚的看清楚框架。其他的发行版本的脚本,肯定也会有所不同,但是大框架还是差不多的。
     首先对整体流程,叙述一遍。要想了解整体流程,看/etc/inittab就可以了,启动过程全是依赖于该配置文件。

1 . 由引导程序 ( grub ) 加载内核,内核初始化
2 . 由内核调用初始化程序由内核参数 init = ""  指定,默认为 " /sbin/init "
3 . init依照 " /etc/inittab " ,  启动系统


先执行 K 开头的(按从低到高),再执行S开头的(从低到高)

------------------------------------------------------------------------------
# 默认为6个运行级别,加上一个系统初始化脚本,同过传递参数给rc脚本,来运行各个级别的初始化,个级别的脚本放在 " /etc/rc.d/rcX.d " .
# " /etc/rc.d/rcX.d " 中的脚本都为 / etc / rc . d / init . d中的链接文件,脚本命名为 Sxxxx和Kxxxx ,  S为start,,K为Stop ,  xxxx为数字,是调用的顺序,从小到大,由rc传递个给该脚本,并按顺序调用 .
# " /etc/rc.d/init.d " 中的脚本 , 都可以接受三种参数start ,  stop ,  restart .

# 记录格式
#    id :rstate:action:process

#         id: 4个字符的唯一标识

#         rstate: 被调用的运行级别 ,  可以为多个级别,为空则是所有级别

#         action: 执行的动作。    
#             respawn: 如果该进程不存在,则运行,并继续扫描inittab,执行其他项目。如果改进程结束,init将,重启该进程
#             wait:    运行该进程,并等待结束,在处理其他记录
#             once: 运行该进程,并继续其他记录,进程中止了也不在运行
#             sysinit: 只有在启动或重启并首先进入单用户模式时调用。并等待结束,不指定运行界别
#             initdefault: 指定默认级别,如果没指定,则要求用户指定一个
#             ctrlaltdel: 同时按下ctrl + alt + del键执行

#              boot : 系统启动时调用,并继续其他记录,进程中止,不在运行
#             bootwait: 第一次从单用户到多用户模式时调用,并等待结束,中止不再运行
#             powerfail: 当接到断电信号 ( SIGPWR ) , 运行
#             powerwait: 同上,并等待结束
#              off : 如果指定进程存在,则向它发出SIGTERM
#             ondemand: 同respawn ,  但与运行级别无关,只用于a , b , c字段

#         process: 指定要运行的进程

#  Begin  / etc / inittab

id:
3 :initdefault :                                                     #  默认初始化级别
si
:: sysinit:/etc/rc.d/init.d/rc sysinit        # 系统初始化运行的脚本

10 : 0 :wait : / etc / rc . d / init . d / rc  0                          #   0 -6运行界别 0为关机,6为重启,1为单用户,3为多用户,5为x
11 :S1:wait : / etc / rc . d / init . d / rc  1
12 : 2 :wait : / etc / rc . d / init . d / rc  2
13 : 3 :wait : / etc / rc . d / init . d / rc  3
14 : 4 :wait : / etc / rc . d / init . d / rc  4
15 : 5 :wait : / etc / rc . d / init . d / rc  5
16 : 6 :wait : / etc / rc . d / init . d / rc  6

ca:
12345 :ctrlaltdel : / sbin / shutdown -t1 -a -r now         #  ctrl + alt + del时,重启

su
:S016:once : / sbin / sulogin                                                     #  ?

1 : 2345 :respawn : / sbin / agetty tty1  9600                                  # 控制台,agetty初始化控制台,然后调用login程序,当用户退出时,重新调用agetty
2 : 2345 :respawn : / sbin / agetty tty2  9600
3 : 2345 :respawn : / sbin / agetty tty3  9600
4 : 2345 :respawn : / sbin / agetty tty4  9600
5 : 2345 :respawn : / sbin / agetty tty5  9600
6 : 2345 :respawn : / sbin / agetty tty6  9600

#   End   / etc / inittab
------------------------------------------------------------------------------


------------------------------------------------------------------------------
init初始化的脚本过程

所有启动脚本            
/ etc / rc . d / init . d /
运行级别控制函数        
/ etc / rc . d / init . d / function
主要运行级别控制脚本    
/ etc / rc . d / init . d / rc
rc脚本配置                
/ etc / sysconfig / rc    设置启动脚本的目录,运行级别控制函数脚本目录位置,网络配置目录

------------------------------------------------------------------------------
由inittab指定运行agetty,agetty运行login程序,等待登录
启动 login 
shell  (默认是  / bin / sh),并执行 ~ /. bashprofile 
~
/. bashprofile 会自动执行 ~ /. bashrc ,而 ~ /. bashrc 又调用  / etc / bashrc

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 启动脚本 完全注释 1 -- 整体流程 的相关文章

  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • python:numpy 运行脚本两次

    当我将 numpy 导入到 python 脚本中时 该脚本会执行两次 有人可以告诉我如何阻止这种情况 因为我的脚本中的所有内容都需要两倍的时间 这是一个例子 usr bin python2 from numpy import print t
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • 如何在Python中独立于语言安装(linux)获取用户桌面路径

    我找到了 如何找到用户桌面的路径 的几个问题和答案 但在我看来它们都已失效 至少我找到的那些 原因是 如果用户安装的 Linux 不是英语 他或她的桌面很可能位于除 Desktop 例如 对于瑞典语 我相信它是在 Skrivbord 谁知道
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u

随机推荐

  • 冒险游戏:假期冒险公园巡游者 15 parkRanger15 CE mac中文

    Vacation Adventures Park Ranger 15 Collector s Edition 假期冒险 公园巡游者 mac是一款冒险游戏 让玩家扮演公园管理员 开展刺激的公园管护冒险 作为游戏中的公园管理员 你将被派往各种美
  • HTML CSS属性overflow、white-space、text-overflow

    li width 20 float left 文本或图像会移至父元素中的左侧 overflow hidden 不显示超过对象尺寸的内容 white space nowrap 默认处理方式 文本自动处理换行 假如抵达容器边界内容会转到下一行
  • 数组排序sort()方法详解

    sort 方法用原地算法对数组的元素进行排序 并返回数组 默认排序顺序是在将元素转换为字符串 然后比较它们的UTF 16代码单元值序列时构建的 一 sort 方法基本介绍 1 语法 arr sort compareFunction 2 参数
  • [机缘参悟-84]:读《心若菩提 - 曹德旺》有感

    目录 第1章 心若菩提 简介 1 1 心若菩提 的主要内容 1 2 作者简介 第2章 心若菩提 有感 2 1 首要因素 创业意识 长远目标 正确的方向 2 2 顺势而为的创新 2 3 愿景与专注 2 4 人脉 2 5 政 府关系 2 6 大
  • linux-shell-批量查看多个目录下多个csv文件的行数

    批量查看多个文件的行数 文件目录如下 2020 2020 202008 csv 2020 202009 csv 2020 202002 csv 2020 202011 csv 2020 202005 csv 2020 202001 csv
  • 内核态编程规范

    内核态的编程规范包括以下几点 安全性 内核态的编程需要确保代码的安全性 避免出现缓冲区溢出 越权操作等安全漏洞 可靠性 内核态的代码需要保证高可靠性 避免因为程序的不可预期的异常中断导致系统崩溃或者损坏 性能 内核态的代码需要具有很高的性能
  • 常见异常报错

    一 401错误 Unauthorized 客户试图未经授权访问受密码保护的页面 应答中会包含一个WWW Authenticate头 浏览器据此显 示用户名字 密码对话框 然后在填写合适的Authorization头后再次发出请求 二 403
  • Day 36: 关系型数据库和MySQL概述

    关系型数据库和MySQL概述 关系型数据库概述 数据持久化 将数据保存到能够长久保存数据的存储介质中 在掉电的情况下数据也不会丢失 数据库发展史 网状数据库 层次数据库 关系数据库 NoSQL 数据库 NewSQL 数据库 1970年 IB
  • 预测变量的不确定性

    https www toutiao com a6646320437884092936 2019 01 14 19 57 45 在本文中 我们考虑的情况是预测变量的值不可信 而不是目标变量的值可信 为了简单起见 我们考虑一个带有一个数值预测器
  • 弃用Dubbo!这个新一代框架阿里都用疯了!

    哪个Java框架火 要说几年前 那你大可能会说是Spring Cloud Dubbo 但是现在 你还会说是它们吗 微服务当道 阿里巴巴开源一个Spring Cloud的子项目Spring Cloud Alibaba 它用两年的时间在众多架构
  • pointnet C++推理部署--onnxruntime框架

    classification 以分10类 gpu版本为例 先将pytorch训练出的pth权重文件转为onnx文件 import torch import pointnet cls point num 1024 class num 10 n
  • 沸腾过程气泡成核OVITO渲染

    关注 M r m a t e r
  • 保留两位小数,不要四舍五入,截取前两位

    我的主要思路是把我的数据变成字符串数组 整数部分和小数部分分开 然后对小数部分判断有没有小数 没有直接添加两个0 有一位往后边添加一个0 如果有多位小数直接截取前两位即可 实现过程 const baoliuNumber num gt 封装了
  • Android studio卡顿问题

    使用Android studio版本是2 3 3 最近在使用Android studio时候遇到一件事情 项目开始到中期Android studio好好的 流畅得一批 但是某天快要收尾了 使用Android studio打开项目后 鼠标开始
  • VMware卡在命令行/dev/sda1 clean... 界面不动

    网上说进入 alt ctl F2 进入tty不一定能进得去 此时 可以先进入虚拟机设置 对磁盘进行扩容 比如我就从 20GB 扩充到了 60GB 但此时 扩充的40GB属于未格式化的区域 无法被利用 需要格式化 此时 可以用ubuntu的安
  • 【Python爬虫】requests库

    文章目录 1 requests库的介绍 2 requests库的基本用法 2 1request访问请求 2 1 2对豆瓣等网址发送请求的问题 2 2robots协议 2 3查看和修改爬虫的头部信息 2 2 response响应对象 2 3r
  • mysql with语句_sql 中的with 语句使用

    一直以来都很少使用sql中的with语句 但是看到了一篇文章中关于with的使用 它的确蛮好用 希望以后记得使用这个语句 一 with 的用法 With alias name as select1 alias namen as select
  • 【Python游戏】咱就说Python实现一个蔡徐坤大战篮球的小游戏,可还行?

    相关文件 想学Python的小伙伴可以关注小编的公众号 Python日志 有很多的资源可以白嫖的哈 不定时会更新一下Python的小知识的哈 需要源码的小伙伴可以在公众号回复蔡徐坤大战篮球 Python源码 问题解答学习交流群 773162
  • PPLM:使用即插即用语言模型控制文本生成

    Paper https arxiv org pdf 1912 02164 pdf Code https github com uber research PPLM 本文讨论了一种受控文本生成的替代方法 称为即插即用语言模型 PPLM 该方法
  • Linux 启动脚本 完全注释 1 -- 整体流程

    Linux太伟大了 什么东西都可以由你来做主 Linux加载完内核后 所有的其他系统服务 进程 都是靠脚本来加载的 所以Linux是这么的透明 你可以清除的指导你的系统做了什么 下面我就对Linux的启动脚本做了注释 该脚本是属于LFS的