systemd配置文件及管理方法详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了systemd配置文件及管理方法详解相关的知识,希望对你有一定的参考价值。

一、systemd文件夹配置文件夹:

    systemd 配置文件存在于以下三个文件夹中:          

①/etc/systemd/system  存放系统启动的默认级别及启动的unit的软连接,优先级最高。

/run/systemd/system,系统执行过程中产生的服务脚本,优先级次之。

/usr/lib/systemd/system 存放系统上所有的启动文件。优先级最低

------------------------------------------------------------------------------------------

unit分类

unit的定义文件可以根据其后缀名称识别其定义的类型,可以使用systemctl -t help 查看。

    .servicre定义了系统服务的启动

    .target  定义了系统启动的级别标签,systemd 没有运行级别的概念,创建标签只是为了兼容老版本。

    .socket 定义了进程通信用到的套接字,套接字与进程是分离的

    .device 定义了系统启动时内核识别的文件,systemd提供了设备的管理功能,/dev 下的设备由/etc/udev/下的配置文件与.device共同定制

    .mount 定义了系统的文件系统的挂载点

    .snapshop 系统快照

    .swap 用于标识swap设备

    .automount 文件系统的自动挂载点

    .path用于定义文件系统中的一个文件或目录使用。常用于文件系统发生变化时,延迟激活服务。


文件通常由3段组成:

        [Unit]

        [unit的类型:service target socket]

        [install]

[Unit] :不属于第二个标签的定义都放在这里,或存放不属于unit类型的定义,描述信息,依赖的unit

        Description:描述信息

        After:表明需要依赖的服务,作用决定启动顺序

        Before:表明被依赖的服务

        Requles:依赖到的其他unit ,强依赖,即依赖的unit启动失败。该unit不启动。

        Wants:依赖到的其他unit,弱依赖,即依赖的unit 启动失败。该unit继续启动

        Conflicts:定义冲突关系

[Unit 类型]

    [Service]

    Type:启动时关系的定义,

        simpleexec启动的进程就是主进程。

        forking exec 启动的进程生成的其中一个子进程成为主进程,启动完成后,旧的主进程会退出。

        ontshot:启动下一个进程前主进程退出。

        dbus

        notify

        ldle

    PIDFile=/var/run/sshd.pid

    EnvironmentFile 需要使用到的变量的定义文件

    ExecStart= 启动 unit需要执行的命令

    ExecStartpre

    ExecStartpost

    ExecStop=停止unit需要执行的命令

    Restart

    ExecReload=/bin/kill -HUP $MAINPID

    KillMode=process

    Restart=on-failure

    RestartSec=42s

[install]:服务启动或禁用时的一些选项

    Alias:

    RequlredBy: 被那些unit所依赖,

    WanteBy:被那些unit所依赖

    注:修改了的unit文件 需要重载。systemctl daemon-reload

----------------------------------------------------------------------------------

二、centos 7 程序管理工具:

                centos 7 的程序管理基本上都是由工具systemctl完成,systemctl的控制命令是固定不变的。非systemctl启动的服务systemctl无法进行管理。systemd 兼容init文件夹下的启动脚本。

systemctl命令的服务管理的使用:

    管理服务通过的serviceunit文件实现的。管理unit是通过配置文件实现的(针对服务的unit文件,只有service的配置文件才提供功能)

启动服务:

    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

设置服务是否可以被用户设置开机启动状态

    systemctl unmask name.service  取消禁止

    systemctl mask name.service 禁止

查看服务的当前激活状态:

    服务已经启动命令的状态返回值为0 命令未启动命令的状态返回值为非0

    systemctl is-active name.service

查看所有已经激活的服务:

    -t 指定显示的unit类型。

    --all 显示更加详细的信息列表。

    -a 等价 --all

    systemctl list-units

    systemctl list-units -t service

    systemctl list-units -t service -a

查看所有服务:

    systemctl list-units  -a

查看所有服务状态:

    systemctl list-unit-files

    -a 、--all : 查看所有服务的状态 

    -t 、--type :指定需要查看的unit类型

    loaded :配置文件已经加载,载入内存

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

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

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

      inactive:不运行

      enabled:开机启动

      disabled:开机不启动

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

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

        ls /etc/systemd/system/*.wants/sshd.service

        systemctl list-unit-files --type target --all

设置服务开机不启动:

        systemctl disable 服务名称unit

查看服务是否开机自启:

        systemctl is-enabled name.service

察看服务的依赖关系:

        systemctl list-dependencies name.service

        systemctl list-depebdencies

重载服务:

        systemctl daemon-reload

杀掉进程:

        systemctl kill 进程名

-------------------------------------------------------------------------------------------

三、systemctl命令的系统运行级别的使用

    老版本的sysv以及upstart已经被替换为systemd,centos7中同样可以能使用init命令切换级别,而且centos7中并无运行级别的概念,centos老版本中的运行级别也不过就是一个被定义死的对象。centos7 为了兼容老版本定义了与老版本 runlevel{0..6}相对应的target后缀的unit。与启动级别对应的target类型的unit为真正的unit的软连接。系统需要运行的unit由软连接文件存放在/etc/systemd/system文件夹下。代表运行状态的target可以相互包含,如5模式的target,包含3模式的target与一些其他unit,或者说5模式依赖3模式,启动5模式需要先启动3模式。systemd的思想是层层包含的关系,5依赖3 ,如果3模式下的服务没有启动,在5模式下同样不会启动。

级别对应关系

1 runlevel0.target , poweroff.target

[[email protected]~]#ll `locate  runlevel0.target`

lrwxrwxrwx. 1 root root 15 3月  22 21:57 /usr/lib/systemd/system/runlevel0.target -> poweroff.target

2 runlevel1.target ,rescue.target

3 runlevel2.target , multl-user.target

4 runlevel3.target , multl-user.target

5 runlevel4.target , multl-user.target

6 runlevel5.target , graphical.target

7 runlevel6.target , reboot.target

使用systemctl命令切换级别

        systemctl isolate name.target

    注:只有/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切换

使用systemctl 命令查看级别

        systemctl list-units –t target

        --all 查看所有的 target

使用systemctl 对默认的运行级别进行设定

        systemctl get-default 获取当前的运行级别

        systemctl set-default name.target  设置当前的运行级别

切换至紧急救援模式

        systemctl rescue  加载驱动

        systemctl emergency  不会加载驱动

其他命令:

    关机: systemctl halt, systemctl poweroff

    重启: systemctl reboot

    挂起: systemctl suspend

    快照\休眠: systemctl hibernate

    休眠并挂起:systemctl hybrid-sleep


本文出自 “linux运维” 博客,请务必保留此出处http://arm2012.blog.51cto.com/2418467/1963238

以上是关于systemd配置文件及管理方法详解的主要内容,如果未能解决你的问题,请参考以下文章

systemd配置文件及管理方法详解(转载)

systemctl配置管理文件详解

(建议收藏)systemd(systemctl命令)运行服务的配置文件详解

linux(十六) 系统引导过程及服务控制详解

Linux-Systemd服务配置文件详解

Linux-Systemd服务配置文件详解