Linux启动流程和服务管理(init和systemd)
目录
二:Linux服务管理(service,systemctl)
一:Linux启动流程
Rhel6启动过程:
Rhel7启动过程:
GRUB2相较于GRUB一代的提升:更健壮、可移植、更强大。支持BIOS、EFI和OpenFirmware,支持GPT和MBR分区表。支持非Linux系统,如苹果HFS文件系统和Windows的NTFS文件系统
systemd 被设计用来改进 sysvinit 的缺点,它和ubuntu的upstart是竞争对手,预计会取代它们。
systemd的目标是:尽可能启动更少进程;尽可能将更多进程并行启动。systemd尽可能减少对shell脚本的依赖。传统sysvinit使用inittab来决定运行哪些shell脚本,大量使用shell脚本被认为是效率低下无法并行的原因。systemd使用了Linux专属技术,不再顾及POSIX兼容。
init和Systemd的区别
init:
- 一是启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程
- 二是启动脚本复杂,Init进程只是执行启动脚本,不管其他事情,脚本需要自己处理各种情况,这往往使得脚本变得很长
- 由Linux内核加载运行,位于 /sbin/init ,是系统中第一个进程,PID永远为1

对于支持 service 的程序,安装的时候,会自动的在 /etc/init.d 目录添加一个配置文件。当我们使用 service 控制程序时,比如执行开启httpd的服务:service httpd start 。那么我们的 service 就会开启 /etc/init.d/httpd 配置文件里面指向的 /usr/sbin/httpd 可执行文件

systemd:
- 按需启动服务,减少系统资源消耗。
- 尽可能并行启动进程,减少系统启动等待时间
- 由Linx内核加载运行,位于 /usr/lib/systemd/systemd ,是系统中第一个进程,PID永远为1

对于支持 systemd 的程序,安装的时候,会自动的在 /usr/lib/systemd/system 目录添加一个配置文件。当我们使用 systemctl 控制该程序时,比如执行开启httpd服务:systemctl start httpd.service 。那么我们的 systemctl 就会开启 httpd.service 配置里面指向的 /usr/sbin/httpd 可执行文件

如果我们想让该程序开机启动,我们可以执行命令 systemctl enable httpd,这个命令相当于在 /etc/systemd/system 目录添加一个软链接,指向 /usr/lib/systemd/system 目录下的 httpd.service 文件。这是因为开机时,Systemd只执行 /etc/systemd/system 目录里面的配置文件。

Init 进程的配置文件
| 参数 | 说明 |
|---|---|
| /etc/init.d/ | 服务启动脚本配置文件存放目录 |
| /etc/inittab | 默认运行级别配置文件 |
| /etc/init/rcS.conf | 系统初始化配置文件 |
| /etc/init/rc.conf | 各运行级别初始化的配置文件 |
| /etc/init/rcS-sulogin.conf | 单用户模式启动 /sbin/sushell 环境的配置文件 |
| /etc/init/control-alt-delete.conf | 终端下的 ctrl+alt+del 热键操作的配置文件 |
| /etc/sysconfig/init | tty终端的配置文件 |
| /etc/init/start-ttys.conf | 配置tty终端的开启数量、设备文件 |
| /etc/init/tty.conf 或 /etc/init/serial.conf | 控制tty终端的开启 |
Systemd进程的配置文件
| 参数 | 说明 |
|---|---|
| /etc/systemd/system/default.target | 取代/etc/inittab文件配置,通常符号链接到 /lib/systemd/system/graphical.target |
| /run/systemd/system/ | 系统执行过程中所产生的服务脚本所在目录 |
| /etc/systemd/system/ | 里面存放着不同级别的开启自启服务 |
| /usr/lib/systemd/system/ 和 /lib/systemd/system/ 和,两个文件完全一样,因为lib是/usr/lib的软链接 | 每个服务最主要的启动脚本设置,类似于之前的 /etc/init.d/ |
运行级别和说明
| 运行级别 | 说明 | Rehl 6/7 命令 | Rhel7 命令 |
|---|---|---|---|
| 0 | 关机状态,使用该级别将会关机 | init 0 | poweroff |
| 1 | 系统救援模式,多用于系统维护 | init 1 | systemctl isolate rescue.target |
| 2 | 字符界面的多用户模式(不可访问网络) | init 2 | systemctl isolate mutil-user.target |
| 3 | 字符界面的完整多用户模式,大多数服务器主机运行此级别 | init 3 | systemctl isolate mutil-user.target |
| 4 | 未分配使用 | init 4 | systemctl isolate mutil-user.target |
| 5 | 图形界面的多用户模式,提供了图形桌面操作环境 | init 5 | systemctl isolate graphical.target |
| 6 | 重新启动主机 | init 6 | reboot |
查看运行级别:
- runlevel : 显示切换前的运行级别 和当前运行级别 (6/7)
- systemctl get-default : 显示当前运行级别 (7)
永久设置开机模式
- systemctl set-default multi-user.target 开机默认为文本模式
- systemctl set-default graphical.target 开机默认为图形模式
- 修改 /etc/inittab 默认运行级别配置文件
二:Linux服务管理(service,systemctl)
Rhel6 用 service 和 chkconfig 来管理服务,它是 SystemV 架构下的一个工具。
Rhel7 是用 systemctl 来管理服务,它融合了之前的 service 和 chkconfig 的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。systemctl 是 systemd 架构下的一个工具。
| 动作 | Rhel6 旧指令 | Rhel7新指令 |
|---|---|---|
| 启动某服务 | service httpd start | systemctl start httpd |
| 停止某服务 | service httpd stop | systemctl stop httpd |
| 重启某服务 | service httpd restart | systemctl restart httpd |
| 检查服务状态 | service httpd status | systemctl status httpd |
| 删除某服务 | chkconfig --del httpd | 停掉应用,删除其配置文件 |
| 使服务开机自启动 | chkconfig --level 5 httpd on | systemctl enable httpd |
| 使服务开机不自启动 | chkconfig --level 5 httpd off | systemctl disable httpd |
| 显示所有已启动的服务 | chkconfig --list | systemctl list-unit-files | grep enabled |
| 加入自定义服务 | chkconfig --add test | systemctl load test |
| 查询服务是否开机自启 | chkconfig --list | grep httpd | systemctl is-enabled httpd |
| 查看启动失败的服务 | systemctl --failed |
systemd的一些常用命令:
列出所有可用单元 : systemctl list-unit-files
列出所有运行的单元: systemctl list-unit-files | grep enabled
列出所有可用服务: systemctl list-unit-files --type=service
列出所有运行的服务: systemctl list-unit-files --type=service | grep enabled
屏蔽httpd服务:systemctl mask httpd
Linux启动流程和服务管理(init和systemd)的更多相关文章
- Linux操作系统-CentOS7启动流程和服务管理
Linux操作系统-CentOS7启动流程和服务管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.systemd POST --> Boot Sequence --&g ...
- Linux操作系统-CentOS6启动流程和服务管理
Linux操作系统-CentOS6启动流程和服务管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux组成 1>.Linux: kernel+rootfs ker ...
- Linux启动流程与模块管理(15)
系统的启动其实是一项非常复杂的过程,因为内核得要检测硬件并加载适当的驱动程序,接下来则必须要调用程序来准备好系统运行的环境,以让用户能够顺利的操作整台主机系统,如果你能够理解系统启动的原理,那么将有助 ...
- 鸟哥的linux私房菜——第20章 启动流程、模块管理与loader
20.1 Linux启动流程分析 Linux启动过程: 按下开机电源后计算机硬件主动读取BIOS来加载硬件信息以及硬件系统的自我测试,之后系统会主动读取第一个可启动的设备(由BIOS设置),此时就可以 ...
- Linux启动流程详解
在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...
- Linux启动流程详解【转载】
在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...
- Linux启动流程CentOS6和7的区别
目 录 Linux启动流程 I 第1章 CentOS6启动流程 1 1.1 BIOS 1 1.2 MBR 1 1.3 GRUB 1 1.4 kernel(加载内核) ...
- 20、linux启动流程和救援模式
1.Linux启动流程 2.Linux运行级别 1.什么是运行级别,运行级别就是操作系统当前正在运行的功能级别 System V init运行级别 systemd目标名称 作用 0 runlevel0 ...
- 浅析Linux启动流程
Linux系统启动流程 Linux 系统的启动,从计算机开机通电自检开始,一直到登陆系统,需要经历多个过程.了解 Linux 的启动过程,有助于了解 Linux 系统的结构,也对系统的排错有很大的帮助 ...
随机推荐
- [个人总结]pip安装tensorboard太慢
在执行pip install语句的时候直接指定国内豆瓣的镜像源进行下载: pip install -i https://pypi.douban.com/simple 你想下载的包的名称 例如下载ten ...
- 【Arduino学习笔记02】第一个Arduino项目——点亮LED Blink.ino程序解读 Arduino程序基本结构 pinMode() digitalWrite() delay()
/* Blink Turns an LED on for one second, then off for one second, repeatedly. */// define variables ...
- 零投资!零风险!手把手教你挖pi币
为什么说PI币属于区块链4.0代币呢?我们先从人类社会的生产力生产关系的递进来做一波有利的证明! 原始社会--封建王朝--君主立宪--资本主义--社会主义 原始社会:社会物质财富分配既有弱肉强食也有按 ...
- android分析之Binder 01
终于还是得写一篇关于Binder的文章了.从最初接触Android到花大把时间研究Android源码,Binder一直是分析道路的拦路虎.看了几本最流行的Android源码分析书籍,每次基本上都不能把 ...
- POJ_2752 Seek the Name, Seek the Fame 【KMP】
一.题目 POJ2752 二.分析 比较明显的KMP运用. 但是这题不是只找一个,仔细看题后可以发现相当于是在找到最大的满足条件的后缀后,再在这个后缀里面找满足条件的后缀. 可以不断的运用KMP得出答 ...
- 一键自签本地 TLSv3 多域名 SAN 域名证书工具 HTTPS(最新版 Chrome 浏览器策略测试通过)
一键自动生成本地自签名SAN域名证书工具 原生OpenSSL生成自签名SAN CA域名(V3签名),在Linux.MacOS系统下签发测试通过. 用于一键快速生成开发和测试场景证书,内部平台授权和私有 ...
- python-3-3 字典
一 元组(tuple) 1.元组也是一个list,他和list的区别是 元组里面的数据无法修改 元祖用()小括号表示,如果元祖里面只有一个元素的话,必须在这个元素的后面添加一个逗号,不然就不是元祖了 ...
- 【JVM进阶之路】一:Java虚拟机概览
1.Java简史 Java语言是一门通用的.面向对象的.支持并发的程序语言.全球从事Java相关开发的人员已经数以百万计. 从1995年"Java"正式出现以来,Java已经经历了 ...
- 攻防世界 reverse reverse-for-the-holy-grail-350
reverse-for-the-holy-grail-350 tu-ctf-2016 程序流程很简单,就一个检验函数: 1 __int64 __fastcall stringMod(__int64 ...
- 一次 outline 去除经验(非继承属性,看着像继承)
情况描述: 目前维护的老项目是通过 easyui 生成的 html,嵌套结构非常多,当点击元素后,会有个边框???非常影响页面美观,这是啥迷惑点击交互??? 经验告诉我,这是 css 的 outlin ...