Centos7下的systemd管理
systemd是由红帽公司的一名叫做Lennart Poettering的员工开发,systemd是Linux系统中最新的初始化系统(init),它主要的设计目的是克服Sys V 固有的缺点,提高系统的启动速度,systemd和upstart是竞争对手。
Ubantu上使用的是upstart的启动方式;
CentOS7上使用systemd替换了Sys V;
Systemd目录是要取代Unix时代依赖一直在使用的init系统,兼容SysV和LSB的启动脚本,而且能够在进程启动中更有效地引导加载服务。
system:系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其他进程,根据管理,字母d是守护进程(daemon)的缩写,systemd这个名字的含义就是它要守护整个系统。
systemd:
系统启动过程:
POST -->Boot sequeue(BIOS) -->BootLoader(MBR)-->Kernel(ramdisk) --> rootfs --> /sbin/init
init:
CentOS5:sysvinit
CentOS6:Upstart
CentOS7:Systemd
systemd的新特性
系统引导实现服务并行启动;
按需激活进程; 系统状态快照;
基于依赖关系定义的服务控制逻辑;
核心概念:unit
unit由其相关配置文件进行标识、识别、配置;主要包含了系统服务监听的socket、保存的快照及其他与init相关的信息;
这些配置文件主要保存在:
/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system
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,用于文件系统的一个文件或者目录;如果不存在可以自动创建。
关键特性:
基于socket的激活机制:socket与程序是分离的;
基于bus(总线)的激活机制;
基于device(设备)的激活机制:可以自动激活设备
基于path的激活机制;
系统快照:保存各unit的当前状态信息于之久存储设备中;
向后兼容sysvinit脚本;/etc/init.d/
不兼容:
systemctl的命令是固定不变的;
非由systemd启动的服务,systemd无法探测其启动状态(无法控制此服务);
管理系统服务:
CentOS7:service类型的unit文件;
systemctl命令:
systemctl start/stop/restart/status name.service
条件式重启:systemctl try-restart name.service
重载或重启服务:systemctl reload-or-restart name.service
重载或条件式重启服务:systemctl reload-or-try-restart name.service
查看某服务当前激活与否的服务状态:systemctl is-active name.service
查看所有已激活的服务:systemctl list-units -t service
查看所有(已激活或者未激活)的服务:systemctl list-units -t service --all
设置服务开机自启:systemctl enable name.service
设置服务开机自启:systemctl disable name.service
查看某服务是否开机自启:systemctl is-enabled name.service
禁止某服务开机自启:systemctl mask name.service
取消此禁止:systemctl unmask name.service
查看服务的依赖关系:systemctl list-dependencies name.service
管理target units:
运行级别:
0-->关机 runlevel0.target,poweroff halt
1-->单用户级别 runlevel1.target,rescue.target (救援级别)
2-->正常级别 runlevel2.target,multi-user.target
3-->正常级别 runlevel3.target,multi-user.target
4-->正常级别 runlevel4.target,multi-user.target
5-->图形级别 runlevel5.target,graphical-user.target
6-->重启级别 runlevel6.target,reboot.target
级别切换:
systelctl isolate name.target
查看当前级别:systemctl list-units --type target 【-a】
获取默认运行级别:systemctl get-default
需改默认运行级别:systemctl set-default name.target
切换至紧急救援模式:systemctl rescue
切换至emergency模式(额外驱动服务都不被加载):systemctl emergency
其他常用命令:
关机:systemctl halt,systemctl poweroff
重启:systemctl reboot 挂起:systemctl suspend
快照:systemctl hibernate
快照并挂起:systemctl hybrid-sleep
。。。。。。。