Centos7 Systemd概念

 

centos7 init程序使用的是Systemd,它是系统启动和服务器守护进程管理器,负责系统启动或运行时,激活系统资源,服务器进程和其他进程。

 

systemd关键特性

基于socket的激活机制:socket与服务程序分离

基于bus的激活机制

基于device的激活机制

基于path的激活机制

系统快照:保存各unit的当前状态信息于持久存储设备中

向后兼容sysv init脚本

 

Systemd核心单元

核心概念:unit unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中 主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息

配置文件:

 /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/

/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行

/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行

 

Unit的单元类型:

Service unit:文件扩展名为.service 用于定义系统服务;

Target unit:文件扩展名为.target 用于模拟实现“运行级别”

Device unit.device 用于定义内核识别的设备

Mount unit.mount 定义文件系统挂载点

Socket unit.socket,用于标识进程间通信用的socket文件

Snapshot unit.snapshot 管理系统快照

Swap unit.swap 用于表示swap设备

Automount unit.automount 文件系统的自动挂载点

Path unit.path 用于定义文件系统中的一个文件或者目录

 

system解决服务依赖性

例如,rpcbind服务和nfs服务,在centos6上需要先启动rpcbind才能使用nfs

centos7上直接启动nfs时,systemd会自动启动依赖服务rpcbind

 

管理系统服务:

centos 7 : service unit

注意能兼容早期的服务脚本

 

命令:system COMMAND name.service

启动:service name start ===> systemctl start name.service

停止:service name stop ===> systemctl stop name.servcie

重启:service name restart ===> systemctl restart name.service

状态:service name status ===> systemctl status name.service

重载或重启服务:systemctl reload-or-restart name.service

重载或条件重启:systemctl reload-or-try-restart name.service

条件式重启:service name condrestart ===> systemctl try-restart name.service

 

查看某服务当前激活与否的状态: systemctl is-active name.service

查看所有已激活服务:systemctl list-units --type service

查看所有服务:systemctl list-units --type service --all

 

chkconfig命令的对应关系:

设定某服务开机自启:chkconfig name on ===> systemctl enable name.service

禁止:chkconfig name off ===> systemctl disable name.service

查看所有服务的开机自启状态:

chkconfig --list ===> systemctl list-unit-files --type service

其他命令:

查看服务依赖关系:systemctl list-dependencies name.service

禁止服务开机自启(假设已经enable):systemctl mask name.service

去标记:systemctl umask name.service

target units:

unit配置文件:.target

运行级别:

0 ==> runlevel0.targetpowerof.target

1 ==> runlevel1.targetrescue.target

2 ==> runlevel2.targetmultiuser.target

3 ==> runlevel3.targetmultiuser.target

4 ==> runlevel4.targetmultiuser.target

5 ==> runlevel5.targetgraphical.target

6 ==> runlevel6.targetreboot.target

切换级别:

init N ==> systemctl isolate name.target 前提是name.target已经激活

获取默认运行级别:

/etc/inittab ==> systemctl get-default

修改默认级别:

/etc/inittab ==> systemctl set-default name.target

切换至紧急模式

systemctl rescue

切换值emergency模式

systemctl emergency

 

其他常用命令:

关机:systemctl haltsystemctl poweroff

重启:systemctl reboot

挂起:systemctl suspend

快照:systemctl hiberate

快照并挂起:systemctl hybrid-sleep

 

systemd代替xinetd守护进程

centos7安装telnet时不安装xinetd

systemctl start telnet.socket

ss -ntl

ss -ntlpe 可以看到是systemd在监听23端口,实际上telnet服务还没启动