zoukankan      html  css  js  c++  java
  • Linux *.service文件详解

    什么是systemd service?

    systemd service是一种以.service 结尾的配置文件,是一个专用于Linux操作系统的系统与服务管理器。简单来说,用于后台以守护精灵(daemon)的形式运行程序。

     

    systemd服务的内容主要分为三个部分,控制单元[Unit]的定义、服务[Service]的定义、以及[Install]安装部分。

     

    示例详解

    [Unit]

    Description=httpd        #当前配置文件的描述信息

    After=network.target     #表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动

     

    [Service]

    Type=forking             #定义启动类型

    ExecStart=/usr/local/apache/bin/apachectl start     #定义启动进程时执行的命令

    ExecReload=/usr/local/apache/bin/apachectl restart  #重启服务时执行的命令

    ExecStop=/usr/local/apache/bin/apachectl stop       #定义关闭进程时执行的命令

    PrivateTmp=true                                     #是否分配独立空间

     

    [Install]

    WantedBy=multi-user.target    #表示多用户命令行状态

     

    字段详解

    [Unit]字段

    这个字段主要给出服务描述、启动顺序和依赖关系。

     

    字段说明

    ·         Description:给出当前服务的简单描述。

    ·         Documentation:给出文档位置。

    ·         After:表示在什么服务之后启动。

    ·         Before:表示在什么服务之前启动。

    ·         Wants:表示该服务和某服务存在某种弱依赖关系,即某服务停止运行或退出不影响该服务继续运行。

    ·         Requires:则表示”强依赖”关系,即某服务停止运行或退出,改服务也必须停止运行。

     

    After和Before只涉及启动顺序,不涉及依赖关系。

    Wants与Requires只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。

     

    [Server]字段

    这个字段主要给出服务的启动行为,如何启动、重启、停止。

     

    字段说明

    ·         Type:定义启动类型。它可以设置的值如下:

    o    simple(默认值):ExecStart字段启动的进程为主进程。

    o    forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。

    o    oneshot:类似于simple,但只执行一次,Systemd会等它执行完,才启动其他服务。

    o    dbus:类似于simple,但会等待D-Bus信号后启动。

    o    notify:类似于simple,启动结束后会发出通知信号,然后Systemd再启动其他服务。

    o    idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混。

    ·         ExecStart:定义启动进程时执行的命令,就是手动启动时执行的命令。

    ·         ExecReload:重启服务时执行的命令。

    ·         ExecStop:停止服务时执行的命令。

    ·         ExecStartPre:启动服务之前执行的命令。

    ·         ExecStartPost:启动服务之后执行的命令。

    ·         ExecStopPost:停止服务之后执行的命令。

    ·         KillMode:定义Systemd如何停止sshd服务。它可以设置的值如下:

    o    control-group(默认值):当前控制组里面的所有子进程,都会被杀掉。

    o    process:只杀主进程。

    o    mixed:主进程将收到SIGTERM信号,子进程收到SIGKILL信号。

    o    none:没有进程会被杀掉,只是执行服务的stop命令。

    ·         Restart:定义了sshd退出后,Systemd的重启方式。它可以设置的值如下:
    对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal。

    o    no(默认值):退出后不会重启。

    o    on-success:只有正常退出时(退出状态码为0),才会重启。

    o    on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启。

    o    on-abnormal:只有被信号终止和超时,才会重启。

    o    on-abort:只有在收到没有捕捉到的信号终止时,才会重启。

    o    on-watchdog:超时退出,才会重启。

    o    always:不管是什么退出原因,总是重启。

    ·         RestartSec:表示Systemd重启服务之前,需要等待的秒数。

    ·         user:可以设置服务的用户名。

    ·         WorkingDirectory:指定服务的安装目录。

     

    [Install]字段

    该字段定义如何安装这个配置文件,即怎样做到开机自启。

     

    字段说明:

    ·         WantedBy:表示该服务所在的Target。

     

    Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是服务所在的Target是multi-user.target

    Systemd有默认的启动Target。就是multi-user.target,在这个组里的所有服务,都将开机启动。

     

    查看multi-user.target包含的所有服务:

    systemctl list-dependencies multi-user.target

  • 相关阅读:
    建立表空间和用户
    数据库设计的基本步骤
    ubuntu21.04(linux):安装python3+dlib+face_recognition
    ubuntu21.04(linux):为chrome安装vue-devtools(6.0.0 beta 14)调试插件
    ubuntu21.04(linux):安装node(14.17.1)和vue.js3.1环境
    ubuntu21.04(linux):用apt安装nginx/php/mysql/phpmyadmin(开发环境)
    ubuntu21.04(linux):安装webstorm2021.1
    linux:在fedora 32/ubuntu 21.04安装chrome 90浏览器
    spring boot单元测试之十六:junit5:用@Timeout注解判断测试运行是否超时(spring boot 2.4.4)
    spring boot单元测试之十五:用mockmvc测试返回异步结果的controller(spring boot 2.4.4)
  • 原文地址:https://www.cnblogs.com/gongxianjin/p/15673132.html
Copyright © 2011-2022 走看看