系统管理-系统启动

upstart的启动方式

upstart的特点

upstart解决了之前提到的sysvinit的缺点,采用时间驱动模型,upstart可以:

更快地启动系统
当新硬件被发现时动态启动服务
硬件被拔除时动态停止服务
这些特点使得upstart可以很好地应用在桌面或者便携式系统中,处理这些系统中的动态硬件插拔特性

upstart启动过程:

系统通电后运行GRUB载入内核。内核执行硬件初始化和内核自身初始化。在内核初始化最后,内核将启动pid为1的init进程,即upstart进程。

upstart进程在执行了一些自身的初始化工作后,立即发出“starup”事件。上图中的红色箭头表示事件,可以在左上方看到“startup事件”。

所有依赖于“startup”事件的工作被触发,其中最重要的是mountall,mountall任务负责挂载系统中需要使用的文件系统。完成相应的工作后,mount任务会发出以下

事件:local-filesystem,virtual-filesystem,all-swaps

 此时,任务rc-sysinit会被触发,因为rc-sysinit的start on 条件如下:

start on filesystem and net-device-up IFACE=io

任务rc-sysinit调用telinit,telinit、任务会发出runlevel事件,触发执行/etc/init/rc.conf。rc.conf执行/etc/rc$.d/目录下的所有脚本,和sysvinit非常相似。

了解systemd启动方式

systemd简介

系统启动和服务器进程是由systemd系统和服务管理器进行管理。此程序提供了一种方式,可以在启动时和运行中的系统上激活系统资源,服务器守护进程和其它进程
守护进程是在执行各种任务的后台等待或者运行的进程,为了监听链接,收回进程时候socket,socket可以由守护进程创建,或与守护进程分离,并且可能由另一个进程创建,随后在客户端建立连接时通过socket传递到守护进程
服务通常指定的是一个或者多个守护进程,单启动或停止一个服务可能会对系统的状态进行一次更改,不会留下守护进程之后继续运行。

在centos7中,pid属于systed这一个新的init系统,systemd提供了几项新的功能:

并行化功能,它可提高系统的启动速度
按需启动守护进程,而不需要单独的服务
自动管理服务依赖关系,可以方式长时间超时,
利用Linux cgroup一起跟踪相关进程的方式
在系统启动过程中要设计多个不同的组件,按下开机按钮后,首先BIOS/UEFI做最基本的硬件自检与初始化,
然后加载预设/手动选择的磁盘/网络上的引导加载器,引导加载器进一步从磁盘/网络上加载操作系统内核
对于Linux来说,内核将会解压一个initrd镜像
并执行由指定的init程序,以寻找并挂载根文件系统
完成根文件系统的挂载之后,内核启动指定的init程序以及管理系统的控制权
该init程序将会负责检测所有其他的硬件设备,挂载必要的文件系统,启动必要的服务等等
关机时,init程序将会停止所有服务,卸载所有的问价系统,返回initrd环境,卸载根文件系统,关闭电源

注意:

有了systemd,基于shell的服务脚本仅用于几个传统服务,因此,带有shell变量的配置文件将被取代,如/etc/sysconfig中可以找到配置文件,仍在使用中的配置文件作为systemd环境文件被导入,并作为NAME=VALUE对进行读取他们不再以shell脚本的形式提供
systemctl和systemd unit
systectl命令用于管理各种类型的systemd对象,他们成为单元,可以通过systemctl -t help命令显示可用unit类型的类表。

以下是一些常用的unit类型

.service unit扩展名为.service,表示系统服务。这总unit用于启动经常访问的守护进程,如Web服务器
.socket unit 扩展名为.socket ,表示IPC(进程间通信)socket。
.path unit扩展名为.path, 用于将服务器的激活推迟到特定文件发生更改之后

服务状态

可以通过systemctl status name.type查看服务的状态,如果为提供unit类型,则systemctl将显示服务unit的状态(如果存在)

[root@localhost ~]# systemctl status sshd.service 
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2018-08-29 11:19:31 CST; 22h ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1054 (sshd)
   CGroup: /system.slice/sshd.service
           └─1054 /usr/sbin/sshd -D

8月 29 11:19:31 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
8月 29 11:19:31 localhost.localdomain sshd[1054]: Server listening on 0.0.0.0 port 22.
8月 29 11:19:31 localhost.localdomain sshd[1054]: Server listening on :: port 22.
8月 29 11:19:31 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
8月 29 11:21:11 localhost.localdomain sshd[3054]: Accepted password for root from 10....2
8月 30 08:49:36 localhost.localdomain sshd[8762]: Accepted password for root from 10....2
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# 
关键字:描述
loaded unit配置文件已处理
active(running) 一个或者多个进程正在持续运行
active(exited)一成功完成一次配置
active(waiting)运行中,但是正在等待event
inactive 没有运行
enabled 将在系统启动时启动
disabled 不会在系统启动时启动
static 无法启动,但可以由某一启动的unit自启启动

更多详情请百度。。概念性的东西不想写。。

猜你喜欢

转载自www.cnblogs.com/52-qq/p/9558240.html