systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV ,Upstart和 LSB 的启动脚本。在CentOS 7中成为默认的服务管理器。
#CentOS 5: SysV init
#CentOS 6: Upstart
#CentOS 7: Systemd
systemd 的特性有:
- 支持并行化任务;
- 同时采用 socket 式与D-Bus总线式激活服务;
- 按需启动守护进程(daemon);
- 利用 Linux 的 cgroups监视进程;
- 支持快照和系统恢复;
- 维护挂载点和自动挂载点;
- 各服务间基于依赖关系进行精密控制。
systemd核心概念:unit
systemd引入了一个新的概念,叫做unit,所有可用的单元文件存放在 /usr/lib/systemd/system/
和 /etc/systemd/system/
目录。
unit类型:
系统服务(.service
):.service, 用于定义系统服务;
挂载点(.mount
):.mount,定义文件系统挂载点;
sockets(.sockets
) :.socket, 用于标识进程间通信用的socket文件;
系统设备(.device
):.device, 用于定义内核识别的设备;
交换分区(.swap
): .swap, 用于标识swap设备;
文件路径(.path
):.path,用于定义文件系统中的一个文件或目录;
启动目标(.target
):.target,用于模拟实现“运行级别”;
系统快照(.swap
):.swap, 用于标识swap设备;
自动挂载点(.automount
):.automount,文件系统的自动挂载点;
systemd的主要命令是systemctl
。该命令可用于查看系统状态和管理系统及服务。
命令格式:
systemctl [OPTIONS...] COMMAND [NAME...]?
显示系统状态:
systemctl status?
查看激活的单元:
systemctl | systemctl list-units?
查看失败的单元
systemctl --failed?
服务管理:
启动服务: systemctl start name.service #.service可以不加 关闭服务: systemctl stop name.service 查看服务状态: systemctl status name.service 重启服务: systemctl restart name.service 条件式重启: systemctl try-restart name.service 重载或重启服务: systemctl reload-or-restart name.service 重载或条件式重启服务: systemctl reload-or-try-restart name.service 查看所有已激活的服务: systemctl list-units --type service 查看所有服务: systemctl list-units --type service --all 查看某服务当前激活与否状态: systemctl is-active name.service 设置服务开机启动: systemctl enable name.service 禁止服务开机启动: systemctl disable name.service 查看服务是否开机启动: systemctl is-enabled name.service 查看所有服务是否开机启动: systemctl list-unit-files --type service 禁止设为开机启动: systemctl mask name.service 取消禁止设为开启启动: systemctl unmask name.service 查看服务启动依赖关系: systemctl list-dependencies name.service?
在RHEL/CentOS 5/6 中,更改系统默认的启动运行级别的方式是编辑/etc/inittab
,systemd 是向前兼容的,那么systemd 的运行级别为:
runlevel0.target, poweroff.target runlevel1.target, rescue.target runlevel2.target, multi-user.target runlevel3.target, multi-user.target runlevel4.target, multi-user.target runlevel5.target, graphical.target runlevel6.target, reboot.target?
运行级别切换:
systemctl isolate name.target 查看当前默认运行级别: systemctl get-default 修改默认级别: systemctl set-default name.target?
电源管理:
关机: systemctl halt | systemctl poweroff 重启: systemctl reboot 休眠: systemctl hibernate 混合休眠模式:(同时休眠硬盘并待机) systemctl hybrid-sleep?