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.target,powerof.target
1 ==> runlevel1.target,rescue.target
2 ==> runlevel2.target,multiuser.target
3 ==> runlevel3.target,multiuser.target
4 ==> runlevel4.target,multiuser.target
5 ==> runlevel5.target,graphical.target
6 ==> runlevel6.target,reboot.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 halt,systemctl 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服务还没启动