Linux 的引导与服务控制

    一 开机启动过程

bios加电自检-->mbr-->grub-->加载内核文件-->启动第一个进程

1  bios加电自检

检测硬件是否正常,然后根据bios中的启动项设置,去找内核文件

2  mbr

因为grup太大,第一个扇区存不下所有的grub程序,所以分为2部分指引硬件找到内核文件

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设备,将系统控制权传递给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用启动菜单

3 grub

根据grub配置文件(grub.cfg)中记录的位置,去找到内核文件

对于Linux操作系统来说,GRBU(统一启动加载器)是使用最为广泛的多系统引导程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核,

4 加载内核文件:把内核和镜像文件系统加载到内存中可以使用。

Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程

centOS7系统中,默认内核文件位于

5 启动进程=init进程初始化

Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化过程,最后等待用户进行登录。

 总结:加载硬件驱动程序,内核把init进程加载到内存中运行

二.系统初始化进程


1. init进程


由Linux内核加载运行/sbin/init程序

init进程是系统中第一个进程

init进程的PID(进程标记)号永远为1

2. systemd

systemd是linux操作系统的一种init软件

centos7中采用全新的systemd启动方式,取代传统的sysvinit

centos7中运行的第一个init进程是/lib/systemd/system

区别:

init  串行启动后续的程序  一个一个按顺序启动

systemd   是并行启动程序  全部一起启动

路径:

/lib/systemd/system/*.service为结尾的文件

systemd能够识别并管理这些以.service为结尾的程序

centos6与centos7的区别

centos6使用init 串行启动后续程序,一个一个按顺序启动。

centos7使用systemd 并行启动程序,全部一起启动

systemd

systemd是系统的高级程序,代为管理系统上的服务程序

systemd:yum以及rpm安装的软件可以直接使用

systemctl具有启动,关闭,重启,开机自启等功能

编译安装不可以直接使用systemct命令去管理程序,需要手写一个配置文件

“/boot/vmlinuz-3.10.0-514.e17.x86_64”

3 systemd单元进程

二 查看当前运行级别  runlevel 且级别的作用:

1

2

3

4

5

6

7

yum及rpm安装的软件可以直接使用systemctl去启动 关闭 重启 开机自启等功能

编译安装 不可以直接使用systemctl命令去管理程序 需要手写一个配置文件

systemd unit(单元) ,systemd方便管理程序,将程序按照特定的功能分成了很多单元

service unit file 由三部分组成

unit   service   install

unit段的常用选项

description

After

Requires

Wants

Conflicts

service段的常用选项

simple

forking

oneshot

dbus

notify

idle

install段的常用选项

alias

requiredBy

WantedBy

Also

服务配置文件

[Unit]
Description=The nginx HTTP and reverse proxy server       #描述软件的功能

[Service]
PIDFile=/apps/nginx/logs/nginx.pid            # 方便使用  pid  号 进行操作  ,  指明进程的 pid 号
ExecStart=/apps/nginx/sbin/nginx               #使用绝对路径启动
ExecStop=/usr/bin/kill -s TERM $MAINPID       #杀死进程
ExecReload=/apps/nginx/sbin/nginx -s reload       #重新加载

[Install]
WantedBy=multi-user.target       #安装子字符界面
 

四  编译安装nginx-systemctl     ---然后用systemctl管理

 

systemctl get -default #查看默认运行级别systemctl set -default #设置默认运行级别target  #关机rescue.target #单用户multi-user.target   #字符界面graphical.target    #图形界面

三.修复mbr扇区故障

①先添加一块硬盘,(刷新磁盘?)再分区好(fdisk  /dev/sdb)

②将备份文件复制到新盘sdb1 

③模拟破坏

服务程序管理

一旦运行一直运行不会退出

一般后台不会影响前台操作

chkconfig  centos6

chkconfig  --add

chkconfig  --list

chkconfig  --35  服务程序  on  开机自启

chkconfig  --35  服务程序  off  关闭开机

systemd    centos7

四 Linux 运行级别切换

runlevel

查看切换运行级别与当前运行级别

systemctl

查看默认的运行级别

设置永久运行级别

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/

system/default.target systemctl set-default multi-user.target

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

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

相关文章

Edge浏览器开启/关闭侧栏和找回CopilotBing按钮

文章目录 Edge浏览器开启/关闭侧栏找回Copilot&Bing按钮(正常使用其功能需要能够访问外网) Edge浏览器开启/关闭侧栏 打开Edge浏览器,通过快捷键 Ctrl Shift / 来开启/关闭侧栏。 找回Copilot&Bing按钮(正常使用其功能…

【Tools】VS基本使用

文章目录 0 前言1 下载安装与基本使用1.1 下载安装1.2 项目创建1.3 编译运行和调试1.4 界面和设置 2 项目属性配置【重点】2.1 打开项目属性配置窗口2.2 静态库和动态库2.3 包含目录&库目录&依赖项&工作目录2.4 代码中添加附加依赖项2.5 配置项目环境变量2.6 修改属…

护眼台灯是智商税吗?眼科医生告诉你哪款护眼台灯最好

青少年近视发病率高达67%,如今,人们都被屏幕包围着,电脑、手机和电视已经成为最重要的信息手段,我们周围的屏幕也隐藏着有害的光污染。 对于4-15岁年龄段的孩子而言,除了学习本身带来的视力损伤外,每天接触…

Linux编写SH脚本启动单个jar应用

目录 一、启动脚本第一步:创建一个脚本文件第二步:把下面代码复制到脚本中第三步:给脚本授权 二、停止脚本第一步:创建一个脚本文件第二步:把下面代码复制到脚本中第三步:给脚本授权 结尾 一、启动脚本 第一…

Trino:分区表上的SQL提交 查询流程浅析

Trino SQL执行过程的关键特性 Client、Coordinator、Worker之间的通讯,基于HTTP协议。SQL提交、解析、调度、执行等的流程全异步,最大化运行效率。逻辑计划树被在Coordinator侧被拆分成PlanFragment,可以对应于Spark中的Stage概念&#xff0…

C语言学习NO.12-字符函数(二)-strcpy,strcat,strcmp长度不受限制的字符串函数

一、strcpy的使用和模拟实现 &#xff08;一&#xff09;strcpy使用 //strcpy的使用 #include <stdio.h>int main() {char arr1[] "abcdef";char arr2[10] "qwertt";char arr3[10] "okl";strcpy(arr2, arr1);printf("arr2 %s\n&…

iOS 解决push证书不受信任

重新下载&#xff1a;https://www.apple.com/certificateauthority/

【华为OD真题 Python】贪吃的猴子

文章目录 题目描述输入输出示例1输入输出说明示例2输入输出说明示例3输入输出说明备注实现代码题目描述 一只贪吃的猴子,来到一个果园,发现许

leetcode:2784. 检查数组是否是好的(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums &#xff0c;如果它是数组 base[n] 的一个排列&#xff0c;我们称它是个 好 数组。 base[n] [1, 2, ..., n - 1, n, n] &#xff08;换句话说&#xff0c;它是一个长度为 n 1 且包含 1 到 n - 1 恰好各一次&#xff0c;包含 n 两…

Java反射篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、反射使用步骤(获取 Class 对象、调用对象方法)二、获取 Class 对象有几种方法三、利用反射动态创建对象实例前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

Rust:qmetaobject 框架的环境变量和搜索路径设置

一、编译错误 安装qmetaobject后&#xff0c;编译出现下面错误信息&#xff0c;原因是环境变量和搜索路径没有正确设置。 qt_gui>cargo run warning: unused manifest key: buildCompiling qttypes v0.2.11 error: failed to run custom build command for qttypes v0.2.1…

Java集合-LinkedList

Java集合-LinkedList 特性 public class LinkedList<E> extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable1、继承于 AbstractSequentialList &#xff0c;本质上面与继承 AbstractList 没有什么区别…

六、书写命令

目录 一、显示命令 二、命令执行 三、命令出错 四、嵌套执行 make 五、定义命令包 每条规则中的命令和操作系统 Shell 的命令行是一致的。make 会一按顺序一条一条的 执行命令&#xff0c;每条命令的开头必须以[Tab]键开头&#xff0c;除非&#xff0c;命令是紧跟在依赖规…

Handler

我们知道&#xff0c;android是不允许在子线程中更新ui的&#xff0c;但是为了避免anr&#xff0c;我们有时候不得不在子线程中去执行一些耗时操作&#xff0c;然后根据这些耗时操作的执行结果来更新ui界面。对于这种情况&#xff0c;android提供了一套异步消息处理机制。 异步…

【MYSQL】MYSQL 的学习教程(十一)之 MySQL 不同隔离级别,都使用了哪些锁

聊聊不同隔离级别下&#xff0c;都会使用哪些锁&#xff1f; 1. MySQL 锁机制 对于 MySQL 来说&#xff0c;如果只支持串行访问的话&#xff0c;那么其效率会非常低。因此&#xff0c;为了提高数据库的运行效率&#xff0c;MySQL 需要支持并发访问。而在并发访问的情况下&…

【GO】如何用 Golang 的 os/exec 执行 pipe 替换文件

背景 主要记录一下怎么用 Golang 的 os/exec 去执行一个 cmd 的 pipeline&#xff0c;就是拿 cmdA 的输出作为 cmdB 的输入&#xff0c;这里记录了两种方法去替换文件里面的字符串。 pipe 那个逻辑在 demo1 里。 另外一种是直接读文件做替换&#xff0c;一不小心两个都放进来了…

[密码学][ecc]secp256k1

secp256k1 is the elliptic curve used in Bitcoin’s public key cryptography. It is defined by the equation y^2 x^3 7 and is based on the finite field mathematics. The “secp” in secp256k1 stands for “Standards for Efficient Cryptography” and “256” re…

CharRNN实现简单的文本生成

文本数字表示 统计文档中的字符,并且统计字符个数。这里是为了将文字转换为数字表示。 import numpy as np import re import torch class TextConverter(object):def __init__(self,text_path,max_vocab=5000):"""建立一个字符索引转换,主要还是为了生成一个…

【IPC通信--信号】

信号处理函数 • 信号发送函数 – kill(), sigqueue(), raise(), alarm(), setitimer(), pause() &#xff0c; abort() • 信号安装函数 – signal(), sigaction() • 信号集操作函数 – sigemptyset(), sigfillset(), sigaddset(), sigdelset(), sigismember() 信号发送函数—…

将yolov8的检测框从正框修改为旋转框需要做那些修改?

将yolov8项目修改为yolov8_obb项目需要修改模型结构(增加角度预测)、dataloader(使其支持dota格式数据)、修改TaskAlignedAssigner(使其支持带角度的bbox)、修改loss(新增对角度的训练)、修改metric(将hbb指标titile修改为obb)、修改绘图代码(使其能绘制旋转框)。 …