引导过程 单元类型
一、引导过程
引导过程:当你按下开机的电源键直到屏幕显示登录的画面,这中间系统做的一些开机过程。
1.1 开机自检(BIOS)
服务器开机之后,根据主板的bios设置,对cpu,内存,显卡,键盘等设备进行初步的检测。检测成功后根据预设的启动顺序(默认的启动顺序,第二个就是硬盘,要么手动设置的U盘启动。)系统的控制权转移到了硬盘(大多数的时候是转移给本机的硬盘)。
总结:初步的检测硬件工作是否正常,检测成功后,把系统的引导控制权交给硬盘或者光驱或者U盘。
1.2 MBR引导
mbr是硬盘的分区记录表,在这个表里面记录硬盘的分区,以及系统的启动盘的位置在哪儿。
系统的控制权到了硬盘,根据mbr记录表来找,系统的启动盘,找到之后将系统的控制权传递给包含操作系统引导文件的分区,以及mbr记录中系统的启动菜单(grub)。
1.3 grub菜单
硬盘启动之后,找到系统分区,也找到了操作系统所在的位置,grub就会显示启动菜单,包含所有当前可选的操作系统。选择其中一个操作系统之后,系统转移控制权,转移到操作系统的内核文件。
centos7使用的都是grub2启动引导器。
1.4 加载内核文件
操作系统的内核文件是一个预先编译好的特殊的二进制文件(可执行的代码),介于硬件资源和系统程序之间。负责分配资源,调度资源。只是分配和调度,并没有真正运行。预加载到内存当中,等待启动。
1.5 init/system启动方式
/sbin/init进程是系统当中的的第一个进程,是所有其他进程的父进程。init进程在系统中的进程号永远是1。
init是串行,一个一个启动。速度慢。
/lib/systemd/system/他是系统的第一个进程,他的进程号也是1。
systemd是并行,加载在内存当中的程序一起启动。速度快。
二、systemd单元类型
systemd是centos7之后用来管理系统服务进程的管理器。使用单元模式(unit)来描述和控制系统服务和资源。
2.1 特点
1.支持并行服务,提高系统的启动速度。
2.可以支持自动重启。
3.可以在进程运行期间动态控制它的资源和相关服务参数。
4.可以自动解决服务启动中的依赖关系。
5.支持多种管理方式,命令行,也可以使用图形化工作。
2.2 单元类型
单元类型 | 扩展名 | 描述 |
---|---|---|
serviceservice | .service | 描述一个系统的进程。 |
targettarget | .target | 描述一组systemd的单元。进程在不同运行级别下的状态。 |
socketsocket | .socket | 进程启动时根据其配置,分配系统端口,监听端口状态。如果有请求,维护端口通信。(提供网络服务) |
devicedevice | .device | 管理硬件设备,驱动程序,设备文件,设备属性。 |
mountmount | .mount | 管理文件系统挂载,以及挂载的选项,以及挂载之后的数据管理。 |
automountautomount | .automount | 根据配置,自动的实现设备或者文件系统的挂载。 |
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
说明 | |
---|---|
unit | 服务的说明 |
Description | 描述信息 |
After | 依赖,启动这个进程,systemd会根据after的条件把相关的进程一并启动 |
wants | 也是一个依赖条件,systemd也会把这个网络功能一并启动 |
[Service] | 服务运行的参数设置 |
Type=forking | 后台运行 |
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf | 服务启动时具体运行的命令 |
ExecReload=/bin/kill -s HUP $MAINPID | 重启的命令 |
ExecStop=/bin/kill -s TERM $MAINPID | 停止进程的命令 |
[Install] | 服务安装的相关设置,以及运行的模式 |
WantedBy=multi-user.target | 支持多用户模式 |
2.3 系统的运行级别
运行级别 | systemd对应target的 | 说明 |
---|---|---|
0 | target | 关机 |
1 | rescue.target | 单用户模式,系统维护时使用 |
2 | multi-user.target | 字符模式,和3一样 |
3 | multi-user.target | 字符模式,完整的字符模式,3模式可以支持多用户,在工作中我们遇到的都是3 |
4 | multi-user.target | 字符模式,和3一样 |
5 | graphical.target | 图形化多用户模式(工作中没有) |
6 | reboot.target | 重启 |
查看系统的运行级别:
runlevel
切换系统的运行级别:
init 0 1 2 3 4 5 6
2.4 如何对服务进程进行控制
systemctl 控制类型 服务名称(进程)
控制类型 | 说明 |
---|---|
start | 启动 |
stop | 停止 |
restart | 重启 先关闭再开启(修改服务的配置文件,必须重启服务才能生效) |
reload | 重新加载单元配置。 |
status | 查看服务的状态。 |
running | 正常运行 |
dead | 服务停止 |
fail | 启动失败,查找启动失败的原因 |
exit-code 真正的启动失败 | |
result:signal 表示有人强制终止了该进程,不一定是报错 |