CentOS 7上的系统管理之:Systemd和systemctl

早期的CentOS 5系统上,使用的init系统是SysV init。这套系统运行稳定,使用shell脚本的形式,串行地一个个启动进程,当前一个进程启动完毕后,再启动后一个。这种方式带来的缺点是:

计算机的启动速度很慢,后面的进程必须等待前面的进程依次串行地启动完毕方可启动。

有的服务可能在启动后很长的一段时间或者几乎不会使用到,例如服务器中的打印服务。

发展到CentOS 6的时候,init系统换成了Upstart,这个系统有效的解决了上述的缺点,实现了并行启动和按需启动。

而到了CentOS 7的时候,则出现了Systemd这套init系统,它更加完善了并行启动和按需启动,使得启动的速度更上一层楼。这里的按需启动,指的是某个服务被设置为开机启动,当开机时该服务并没有真正的启动,只是注册好了socket占用,等待第一次有请求进来的时候,Systemd悬挂该请求然后启动服务,服务启动完毕后就恢复该请求,从而实现按需启动,这种方式也变相加速了系统的启动速度。

Systemd不仅仅是一个服务,还可以用于管理系统自身的方方面面,例如日志、类似crond的任务调度程序(timer)、电源管理等等。

Systemd支持向后兼容(backward compatible)SysV init的脚本等其他的诸多特性,使得其目前在慢慢成为Linux发行版的一种标准,这是一件好事。

这篇文章所能阐述的也只是Systemd的皮毛而已。主要描述了运维人员在日常使用中应该掌握的systemctl命令,以及如何阅读unit文件以及寻找帮助。

Unit

在Systemd中使用配置文件来进行管理,这些配置文件叫做unit。unit有许许多多的类型,如下。

Unit 类型   文件扩展名   描述  
Service unit   .service   用于管理系统的服务unit,最常用,一般由所安装的服务所提供(httpd、MySQL等)  
Target unit   .target   target unit表示的是期望系统运行于哪个状态下,用户的目标是什么。比如运行于支持图形显示的状态下,那么它除了可以提供CLI的shell界面以外,还需要额外启用许多服务等组件用于支持图形界面,这些组件也是一个个的unit,所以target就是多个unit的集合(这些unit之间还有先后和依赖关系)。因此,target就是用来模拟以前的运行级别(runlevel)的概念。  
Automount unit   .automount   文件系统自动挂载点。  
Device unit   .device   一个被内核所识别的设备文件。  
Mount unit   .mount   一个文件系统的挂载点。  
Path unit   .path   文件系统中的一个文件或目录。  
Scope unit   .scope   一个外部创建的进程。  
Slice unit   .slice   一组用于管理系统进程的分层组织的单元。  
Snapshot unit   .snapshop   Systemd管理器所保存的一个状态,因此称之为快照。  
Socket unit   .socket   一个进程间通信(IPC)socket。  
Swap unit   .swap   一个swap设备或者swap文件。  

Timer unit

  .timer  

一个Systemd timer。

 
Unit配置文件

unit文件存在于三个位置:

/usr/lib/systemd/system/:软件程序包所提供的unit文件。例如httpd程序包提供了httpd.service文件。

/run/systemd/system/:运行时所创建的unit文件。优先级高于已安装的服务unit文件所在的目录。

/etc/systemd/system/:通过systemctl enable所创建的和用于扩展一个服务所添加的unit文件目录。优先级高于运行时unit文件。

优先级:/etc/systemd/system/ --> /run/systemd/system/ --> /usr/lib/systemd/system/。

Systemd配置文件

/etc/systemd/system.conf是Systemd的配置文件,用户可以编辑此文件来修改值。想要恢复默认值的话直接删除此文件即可。文件中每个选项的作用可以参考man手册systemd-system.conf(5)。

主特性

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11611.html