一、学前须知
讲服务管理之前先了解下Linux的启动流程非常有必要,直观的先上CentOS的启动图:
Centos7
Centos6的也补充下:
图片信息量较大,网友可根据自己的知识水平逐一按上图去填充自己,也欢迎指正;本节我们着重写系统服务管理,对启动流程仅做下面简要概述:(下节更新启动流程知识)
RHel6: 开机自检BIOS > MBR引导 > GRUB菜单 > 加载内核 > Init进程初始化
RHel7:开机自检BIOS > MBR引导 > GRUB2菜单 > 加载内核 >System进程初始化
此处我们关注最后一步的进程初始化程序sytem和Init.的区别
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 |
默认运行级别配置文件 |