第十一单元 systemd及systemctl实战

systemd的新特性:

    系统引导时实现服务并启动;
    按需激活进程;
    系统状态快照;
    基于依赖关系定义服务控制逻辑;

核心概念:

    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的当前状态信息于持久存储设备中
    向后兼容sysv init脚本;

不兼容;
    systemctl的命令是固定不变的;
    非由systemd启动的服务,systemctl无法与之通信

管理系统服务;

    centos 7: service类型的init文件

systemctl命令:

    systemctl [OPTIONS] COMMAND [NAME]
    启动:systemctl start NAME.service
    停止:systemctl stop NAME.service
    重启:systemctl restart NAME.service
    状态:systemctl status NAME.service
    条件式重启:systemctl try-restart NAME.service
    重载或重启服务:systemctl reload-or-restart NAME.service
    重载或条件式重启服务:systemctl reload-or-try-restart NAME.service
    查看某服务当前激活与否的状态:systemct is-active NAME.service
    查看所有已激活服务:systemctl list-units --type 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 unmaksk NAME.service
    查看服务的依赖关系:systemctl list-dependencles NAME.service


管理taarget units:
    运行级别:
        0==>runlevel0.target,poweroff.target
        1==>runlevel1.target,rescue.target
        2==>runlevel2.target,multl-user.target
        3==>runlevel3.target,multl-user.target
        4==>runlevel4.target,multl-user.target
        5==>runlevel5.target,graphical.target
        6==>runlevel6.target,reboot.target

    级别切换:systemctl isolate NAME.target

    查看级别:systemctl list-units --type target
    查看所有级别:systemctl list-units -t target -a

    获取默认运行级别:systemctl get-default
    修改默认运行级别:systemctl set-default NAME.target


service unit file:
    文件通常由三部分组成:
        【unit】:定义与unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等;
        【service】:与特定类型相关的专用选项;此处为service类型
        【install】:定义由“systemctl enable”以及“systemctl disable”命令在实现服务启用或禁用时用到的一些选项;

    unit段的常用选项:
        Description:描述信息;意义性描述;
        After:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;其功能与Before相反;
        Requies:依赖到的其它units;强依赖,被依赖的units无法激活时,当前unit即无法激活
        Wants:依赖到的其它units;弱依赖
        Conflicts:定义unit间的冲突关系;

    Service段的常用选项:
        Type:用于定义影响ExecStart及相关参数的功能的unit进程启动类型;
            类型:
                simple:
                forking:
                oneshot:
                dbus:
                notify:
                idle:
        EnvironmentFile:环境配置文件
        ExecStart:指明启动unit要运行命令或脚本;
        ExecStop:指明停止unit要运行的命令或脚本
        Restart:

    Install段的常用选项:
        Alias:
        RequiredBy:被哪些units所依赖
        WantedBy:被哪些units所依赖

    注意:对于新创建的unit文件或修改的unit文件,需要通知systemd重载此配置文件;
    # systemctl daemon-reload

posted @ 2022-10-02 18:56  摩天居士-谢烟客  阅读(53)  评论(0编辑  收藏  举报