博文结构
启动 5 个阶段
Linux 关机
什么是 daemon 与服务(service)
通过 systemctl 管理服务
Systemctl 针对 service 类型的配置文件
一. 启动 5 个阶段:
内核的引导.
运行 init.
系统初始化.
建立终端 .
用户登录系统.
1. 开机自检
服务器主机开机之后, 将根据主板 BIOS 中的设置对 CPU, 内存, 显卡, 键盘等设备进行初步检测, 检测成功后根据预设的启动顺序移交系统控制权, 大多时候会移交本机硬盘;
2.MBR 引导
当从本机硬盘中启动系统时, 首先根据硬盘第一个扇区中 MBR(主引导记录)的设置, 将系统控制权传递给包含操作系统引导文件的分区; 或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB);
3.GRUB 菜单
对于 Linux 操作系统来说, GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序. 系统控制权传递给 GRUB 后, 将会显示启动菜单给用户选择, 并根据所选项 (或采用默认值) 加载 Linux 内核文件, 然后将系统控制权转交给内核. 需要注意的是, CentOS 7 采用的是 GRUB2 启动引导器.
4. 加载 Linux 内核
Linux 内个是一个预先编译好的特殊二进制文件, 介于各种硬件资源与系统程序之间, 负责资源分配与调度. 内核接过系统控制权以后, 将会完全掌握整个 Linux 操作系统的运行过程. 在 CentOS 系统中, 默认的内核文件是 "/boot/vmlinuz-3.10.0-514.el7.x86_64".
5.init 进程初始化
为了进一步的系统引导过程, Linux 内核首先将系统中的 "/sbin/init" 程序加载到内存中运行, init 进程负责完成一系列的系统初始化过程, 最后等待用户进行登录.
二. init 程序的类型:
SysV:?init, CentOS 5 之前, 配置文件: /etc/inittab.
Upstart:?init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf.
Systemd:?systemd, CentOS 7, 配置文件: /usr/lib/systemd/system, /etc/systemd/system.
三. 运行级别
Linux 系统有 7 个运行级别(runlevel):
运行级别 0: 系统停机状态, 系统默认运行级别不能设为 0, 否则不能正常启动
运行级别 1: 单用户工作状态, root 权限, 用于系统维护, 禁止远程登陆
运行级别 2: 多用户状态(没有 NFS)
运行级别 3: 完全的多用户状态(有 NFS), 登陆后进入控制台命令行模式
运行级别 4: 系统未使用, 保留
运行级别 5:X11 控制台, 登陆后进入图形 GUI 模式
运行级别 6: 系统正常关闭并重启, 默认运行级别不能设为 6, 否则不能正常启动
在 inittab 中的以下 6 行就是定义了 6 个终端:
- 2345:respawn:/sbin/mingetty tty1
- 2345:respawn:/sbin/mingetty tty2
- 2345:respawn:/sbin/mingetty tty3
- 2345:respawn:/sbin/mingetty tty4
- 2345:respawn:/sbin/mingetty tty5
- 2345:respawn:/sbin/mingetty tty6
用户登录系统
一般来说, 用户的登录方式有三种:
(1)命令行登录
(2)SSH 登录
(3)图形界面登录
四. 图形模式与文字模式的切换方式
Linux 预设提供了六个命令窗口终端机让我们来登录.
默认我们登录的就是第一个窗口, 也就是 tty1, 这个六个窗口分别为 tty1,tty2 ... tty6, 你可以按下 Ctrl + Alt + F1 ~ F6 来切换它们.
sync 将数据由内存同步到硬盘中
shutdown 关机指令
shutdown -h now 立马关机
shutdown -h 20:25 系统会在今天 20:25 关机
shutdown -h +10 是分钟后关机
shutdown -r now 系统立马重启
shutdown -r +10 系统十分钟后重启
reboot 重启 == shutdown -r now
halt 关闭系统
正确的关机流程为: sync> shutdown> reboot> halt
不管是重启系统还是关闭系统, 首先要运行? sync? 命令, 把内存中的数据写到磁盘中.
关机的命令有? shutdown -h now poweroff? 和? init 0?
重启系统的命令有? shutdown -r now reboot init 6
服务的启动, 关闭与观察等方式:
启动:/etc/init.d/daemon start
关闭:/etc/init.d/daemon stop
重新启动:/etc/init.d/daemon restart
状态观察:/etc/init.d/daemon status
服务启动的分类:
服务的相依性问题:
执行等级的分类:
制定执行等级默认要启动的服务:
默认要启动: chkconfig daemon on
默认不启动: chkconfig daemon off
观察默认为启动否: chkconfig --list daemon
执行等级的切换行为: init3 ?init 5(纯切换到图形界面)
五. 什么是 daemon 与服务(service)
(1)systemd 好处如下:
平行处理所有服务, 加速开机流程:
一经要求就回应的 on-demand 启动方式(systemctl)
服务相依性的自我检查:
依 daemon 功能分类: unit(服务单位)
将多个 daemons 集合成为一个群组:
向下相容旧有的 init 服务脚本:
(2)systemd 的配置文件放置目录
/usr/lib/systemd/system/: 每个服务最主要的启动脚本设置, 有点类似以前的 /etc/init.d 下面的文件;
/run/systemd/system/: 系统执行过程中所产生的服务脚本, 这些脚本的优先序要比 /usr/lib/systemd/system/ 高!
/etc/systemd/system/: 管理员依据主机系统的需求所创建的执行脚本, 其实这个目录有点像以前 /etc/rc.d/rc5.d/Sxx 之类的功 能! 执行优先序又比 /run/systemd/system/ 高
(3)daemon 与服务(service)
(4)通过 systemctl 管理服务
,active (running): 正有一只或多只程序正在系统中执行的意思, 举例来说, 正在执行中的 vsftpd 就是这种模式.
,active (exited): 仅执行一次就正常结束的服务, 目前并没有任何程序在系统中执行. 举例来说, 开机或者是挂载时才会进 行一次的 quotaon 功能, 就是这种模式! quotaon 不须一直执行~只须执行一次之后, 就交给文件系统去自行处理啰! 通常用 bash shell 写的小型服务, 大多是属于这种类型 (无须常驻内存).
,active (waiting): 正在执行当中, 不过还再等待其他的事件才能继续处理.
,inactive: 这个服务目前没有运行的意思. 既然 daemon 目前的状态就有这么多种了, 那么 daemon 的默认状态有没有可能除了
,enabled: 这个 daemon 将在开机时被执行
,disabled: 这个 daemon 在开机时不会被执行
,static: 这个 daemon 不可以自己启动 (enable 不可), 不过可能会被其他的 enabled 的服务来唤醒 (相依属性的服务)
,mask: 这个 daemon 无论如何都无法被启动! 因为已经被强制注销 (非删除). 可通过 systemctl unmask 方式改回原本状态
举例说明
强迫服务注销 (mask)
- [email protected] ~]# systemctl stop firewalld
- [[email protected] ~]# systemctl mask firewalld \\ 就是把启动的脚本清除
- [[email protected] ~]# systemctl status firewalld
● firewalld.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead) since 六 2019-11-23 23:05:22 CST; 17s ago
Main PID: 752 (code=exited, status=0/SUCCESS)
11 月 23 23:03:40 localhost.localdomain systemd[1]: Starting firewalld - dynamic fi....
11 月 23 23:03:43 localhost.localdomain systemd[1]: Started firewalld - dynamic fir....
11 月 23 23:05:22 localhost.localdomain systemd[1]: Stopping firewalld.service...
11 月 23 23:05:22 localhost.localdomain systemd[1]: Stopped firewalld.service.
- Hint: Some lines were ellipsized, use -l to show in full.
- [[email protected] ~]#
- [[email protected] ~]# systemctl unmask firewalld \\ 解除 mask
- [[email protected] ~]# systemctl status firewalld
六. CentOS 7.1 的默认情况下, 就有 26 个 target unit
主要有下面几个
graphical.target: 就是文字加上图形界面, 这个项目已经包含了下面的 multi-user.target 项目!
multi-user.target: 纯文本模式!
rescue.target: 在无法使用 root 登陆的情况下, systemd 在开机时会多加一个额外的暂时系统, 与你原本的系统无关. 这时你可以取得 root 的权限来维护你的系统. 但是这是额外系统, 因此可能需要动到 chroot 的方式来取得你原有的系统
emergency.target: 紧急处理系统的错误, 还是需要使用 root 登陆的情况, 在无法使用 rescue.target 时, 可以尝试使用这种模 式!
5.shutdown.target: 就是关机的流程.
6.getty.target: 可以设置你需要几个 tty 之类的, 如果想要降低 tty 的项目, 可以修改这个东西的配置文件!
正常的模式是 multi-user.target 以及 graphical.target 两个, 救援方面的模式主要是 rescue.target 以及更严重的 emergency.target. 如果要修改可提供登陆的 tty 数量, 则修改 getty.target 项目. 基本上, 我们最常使用的当然就是 multi-user 以及 graphical
- [[email protected] ~]# systemctl poweroff \\ 系统关机
- [[email protected] ~]# systemctl reboot \\ 重新开机
- [[email protected] ~]# systemctl suspend \\ 进入暂停模式
- [[email protected] ~]# systemctl hibernate \\ 进入休眠模式
- [[email protected] ~]# systemctl rescue \\ 强制进入救援模式
- [[email protected] ~]# systemctl emergency \\ 强制进入紧急救援模式
来源: http://www.bubuko.com/infodetail-3301338.html