Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

Centos7下的systemd管理

$
0
0

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 新特性

系统引导时实现服务并行启动

按需启动守护进程

自动化的服务依赖关系管理

同时采用 socket 式与 D-Bus 总线式激活服务

系统状态快照和恢复

利用 Linux 的 cgroups 监视进程

维护挂载点和自动挂载点

各服务间基于依赖关系进行精密控制

systemd 核心概念

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

配置文件 :

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

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

/etc/system/system :管理员建立的执行脚本,类似于 /etc/rc.d/rcN.d/Sxx 类的功能,比上面目录优先运行,在三者之中,此目录优先级最高

Unit 类型

systemctl -t help 查看 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 ,文件系统的自动挂载点如: /misc 目录

path unit : .path ,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如 spool 目录

time : .timer 由 systemd 管理的计时器


Centos7下的systemd管理

使用 systemctl 控制单元时,通常需要使用单元文件的全名,包括扩展名,但是有些单元可以在 systemctl 中使用简写方式

如果无扩展名, systemctl 默认把扩展名当做 .service 。例如 netcfg 和 netcfg.service 是等同的

挂载点会自动转化为相应的 .mount 单元,例如 /home 等价于 home.mount

设备会自动转化为相应的 .device 单元,所以 /dev/sd2 等价于 dev-sda2.device

关键特性

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

基于 D-Bus 的激活机制

基于 device 的激活机制

基于 path 的激活机制

系统快照:保存各 unit 的当前状态信息于持久存储设备中想后兼容 sysv init 脚本

不兼容

systemctl 命令固定不变,不可扩展

非由 systemd 启动的服务, systemctl 无语与之通信和控制,如:使用之前 sys v 风格管理的进程就无法收 systemd 控制

systemd 基本工具

监视和控制 systemd 的主要命令是 systemctl 。该命令可用于查看系统状态和管理系统及服务。

管理服务

命令: systemctl command name.service

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

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

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

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

条件式重启:已启动才重启,否则不做任何操作

systemctl try-restart name.service

重载或重启服务:先加载,然后再启动

systemctl reload-or-try-restart name.service

禁止自动和手动启动

systemctl mask name.service

执行此条命令实则创建了一个链接 ln -s '/dev/null' '/etc/systemd/system/sshd.service'

取消禁止

systemctl unmask name.service

删除此前创建的链接

服务查看

查看某服务当前激活与否的状态

systemctl is-active name.service

如果启动会显示 active ,否则会显示 unknown

查看所有已经激活的服务

systemctl list-units t| type service


Centos7下的systemd管理

查看所有服务

systenctl list-units -t service -a |-all


Centos7下的systemd管理

设定某服务开机启动

chkconfig name on >systemctl enable name.service

设定某服务开机禁止启动

chkconfig name off >systemctl disable name.service

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

chkconfig list >systemctl list-unit-files -t service


Centos7下的systemd管理

用来列出该服务在那些运行级别下启用或禁用

chkconfig sshd list >ls /etc/system/system/*.wants/sshd.service

[root@server system]# ls /etc/systemd/system/*.wants/sshd.service

/etc/systemd/system/multi-user.target.wants/sshd.service

查看服务是否开机自启

systemctl is-enabled name.servcice

查看服务的依赖关系:

systemctl list-dependencies


Centos7下的systemd管理

查看启动失败的服务

systemctl -failed -t service


Centos7下的systemd管理

查看服务单元的启用和禁用状态

systemctl list-unit-files t=service

杀死进程

systemctl kill 进程名


Centos7下的systemd管理

服务状态

systemctl list-units -t service -a 显示状态

loaded : unit 配置文件已处理

active ( running ):一次或多次持续处理的运行

active ( exited ):成功完成一次性的配置

active ( waiting ) : 运行中,等待一个事件

inactive :不运行

enabled :开机启动

disabled :开机不启动

static :开机不启动,但可以被另一个启用的服务激活


Centos7下的systemd管理

运行级别

target units :

unit 配置文件: .target 以 target 结尾的文件

ls /usr/lib/system/system/*.target

systemctl list-unit-files -type target -all

0 >runlevel0.target, poweroff.target

1 >runlevel1.target, rescue.target

2 >runlevel2.target, muti-user.target

3 >runlevel3.target, mutil-user.target

4 >runlevel4.target, multi-user.target

5 >runlevel5.target, graphical.target

6 >runlevel6.target, reboot.target


Centos7下的systemd管理

查看依赖性

systemctl list-dependencies graphical.target

查看默认运行级别

systemctl get-default 在 Sys V 风格的系统上是查看 /etc/inittab 文件其中有一条 id:5:initdefault:

级别切换

systemctl isolate muti-user.target

注意:只有当 /lib/system/system/*.target 文件中 AllowIsolate=yes 时才能奇幻(修改文件需执行 systemctl daemon-reload 生效)

设定默认运行级别

systemctl set-default mu

Viewing all articles
Browse latest Browse all 11063

Trending Articles