zoukankan      html  css  js  c++  java
  • 使用systemd管理程序进程

    使用systemd管理程序

    示例(源代码安装nginx) :

    vim /usr/lib/systemd/system/nginx.service
    
    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    ExecStartPre=/service/nginx/sbin/nginx -t -c /service/nginx/conf/nginx.conf
    ExecStart=/service/nginx/sbin/nginx -c /service/nginx/conf/nginx.conf
    ExecReload=/service/nginx/sbin/nginx -s reload
    Restart=on-failure
    RestartSec=10s
    TimeoutSe=5
    KillMode=control-group
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target
    

    [Unit]区块说明

    描述,启动顺序与依赖关系

    键值 功能描述
    Description 当前服务的简单描述
    Documentation 文档位置
    After (非依赖)启动顺序,其他服务启动后,本程序启动
    Before (非依赖)启动顺序,本程序启动后,再启动其他服务
    Wants (弱依赖),其他程序启动失败或停止运行,不影响本程序继续执行
    Requires (强依赖),其他程序启动失败或停止运行,本程序也必须退出

    [Service]区块说明

    定义如何启动当前服务

    键值 功能描述
    Type 定义启动类型
    ExecStartPre 启动服务之前执行的命令
    ExecStart 启动进程时执行的命令
    ExecStartPost 启动服务之后执行的命令
    ExecReload 重启服务时执行的命令
    ExecStop 停止服务时执行的命令
    ExecStopPost 停止服务之后执行的命令
    Restart 守护进程,当服务进程正常退出、异常退出、被杀死、超时的时候, 是否重新启动该服务。
    RestartSec 服务重启之间,等待的秒数
    TimeoutStartSec 服务允许的最大启动时长
    TimeoutStopSec 服务允许的最大停止时长
    TimeoutSe 同时设置TimeoutStartSecTimeoutStopSec
    KillMode 服务停止时,杀死进程的方法
    PrivateTmp 服务启动时在/tmp目录中生成缓存目录
    LimitNOFILE 最大打开文件数

    [Install]区块说明

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

    键值 功能描述
    WantedBy 表示该服务所在的 Target.默认填写(multi-user.target)

    修改配置文件后重启

    systemctl daemon-reload
    

    部分键值可用项

    • Type 参数设置的值如下
    类型 功能描述
    simple (默认值)ExecStart字段启动的进程为主进程
    forking ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
    oneshot 类似于simple,但只执行一次,Systemd会等它执行完,才启动其他服务
    dbus 类似于simple,但会等待D-Bus信号后启动
    notify 类似于simple,启动结束后会发出通知信号,然后Systemd再启动其他服务
    idle 类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合
    • Restart 参数设置的值如下
    类型 功能描述
    no (默认值)退出后不会重启
    on-success 只有正常退出时(退出状态码为0),才会重启
    on-failure 非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
    on-abnormal 只有被信号终止和超时,才会重启
    on-abort 只有在收到没有捕捉到的信号终止时,才会重启
    on-watchdog 超时退出,才会重启
    always 不管是什么退出原因,总是重启

    对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal

    • KillMode 参数设置的值如下
    类型 功能描述
    control-group (默认值)当前控制组里面的所有子进程,都会被结束
    process 只杀主进程
    mixed 主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
    none 没有进程会被杀掉,只是执行服务的 stop 命令
  • 相关阅读:
    gitlab安装笔记二_Centos7配置163yum源
    gitlab安装笔记一_虚拟机中安装Centos7
    初篇:我与Linux
    Redis分布式锁正确的实现方法
    MacOS从零开始搭建hexo博客
    docker服务编排--docker-compose
    多线程问题整理
    maven依赖范围
    linux打开文件数 too many open files 解决办法
    【数据结构】队列-数组模拟队列
  • 原文地址:https://www.cnblogs.com/taoyuxuan/p/11468172.html
Copyright © 2011-2022 走看看