美文网首页
CentOS7下Systemctl详解

CentOS7下Systemctl详解

作者: JerryAi | 来源:发表于2019-08-11 22:59 被阅读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管理的计时器
      注:使用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 service
    

    设定某服务开机启动

    systemctl enable name.service
    

    设定某服务开机禁止启动

    systemctl disable name.service
    
    

    查看服务是否开机自启

    systemctl is-enabled name.servcice
    

    查看服务的依赖关系

    systemctl list-dependencies
    

    查看启动失败的服务

    systemctl --failed -t service
    

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

    systemctl list-unit-files –t=service
    

    杀死进程

    systemctl kill 进程名 
    

    查看服务是否开机自启

    systemctl is-enabled name.servcice
    

    查看开机启动项

    systemctl list-unit-files |   grep enable
    

    为服务添加开机启动项

    systemctl enable name.service
    

    移除开机启动项的服务

    systemctl disable name.service
    

    查找所有或者某个服务

    systemctl list-units --type=service 
    

    服务状态

    • systemctl list-units -t service -a 显示状态
    • loaded:unit配置文件已处理
    • active(running):一次或多次持续处理的运行
    • active(exited):成功完成一次性的配置
    • active(waiting):运行中,等待一个事件
    • inactive:不运行
    • enabled:开机启动
    • disabled:开机不启动
    • static:开机不启动,但可以被另一个启用的服务激活

    相关文章

      网友评论

          本文标题:CentOS7下Systemctl详解

          本文链接:https://www.haomeiwen.com/subject/gyyejctx.html