Linux自定义服务文件和常用systemctl指令

简介

Linux服务管理常用的两种方式为service和systemctl。service的方式在许多机器上已经弃用,建议使用systemctl方式。

systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能并发启动更多进程。

systemctl命令用法

指令功能
systemctl list-unit-files获取所用可用单元
systemctl list-units获取所有运行中的单元
systemctl status service获取service的状态
systemctl start/stop/estart/reload service改变service 的状态 启动、重启、停止、重载服务
systemctl enable/disable service是否开机自启
systemctl kill service强制结束服务
systemctl daemon-reload刷新systemd的配置文件

编写一个服务

  1. /lib/systemd/system/文件目录下添加.service服务文件;

  2. 编写.service文件

    [Unit]
    Description=Redis In-Memory Data Store
    After=network.target
    
    [Service]
    ## Type=forking,可以理解为 systemd 是一个类似 supervise 的守护进程,
    ## forking 表示服务管理器是系统 init 的子进程,用于管理需要后台运行的服务
    Type=forking
    ExecStart=/usr/local/bin/redis-server /path/to/redis.conf
    ExecStop=/usr/local/bin/redis-cli shutdown
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

上面可以看出.serive文件包括三个部分:[Unit]、[Service]、[Install]。

  • [Unit]

    指令描述
    Description对当前服务的简单描述
    After指定serive在哪些服务之后进行启动
    Before指定serive在哪些服务之前进行启动
    Requires指定服务依赖于哪些服务(强依赖关系,一旦所依赖服务异常,当前服务随之停止)
    Wants指定服务依赖于哪些服务(弱依赖关系,所依赖服务异常不影响当前服务运行)
  • [Service]

    指令描述
    Type定义启动类型。可设置:simple,exec,forking,oneshot,dbus,notify,idle。
    simpleExecStart 字段启动的进程为该服务的主进程
    forkingExecStart 字段的命令将以 fork() 方式启动,此时父进程将会退出,子进程将成为主进程
    ExecStart定义启动进程时执行的命令
    ExecStop停止服务时执行的命令
    EnvironmentFile环境配置文件,用来指定当前服务启动的环境变量
    ExecReload重启服务时执行的命令
    ExecStartPre启动服务之前执行的命令
    ExecStartPost启动服务之后执行的命令
    ExecStopPost停止服务之后执行的命令
    RemainAfterExit设为yes,表示进程退出以后,服务仍然保持执行
    RestartSec重启服务之前需要等待的秒数
    • KillMode:定义 Systemd 如何停止服务,可以设置的值如下:

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

      • process:只杀主进程;

      • mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号;

      • none:没有进程会被杀掉。

    • Restart:定义了退出后,Systemd 的重启方式。可以设置的值如下:

      • no(默认值):退出后不会重启;

      • on-success:当进程正常退出时(退出状态码为0),才会重启;

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

      • on-abnormal:当被信号终止和超时,才会重启;

      • on-abort:当收到没有捕捉到的信号终止时,才会重启;

      • on-watchdog:看门狗超时退出,才会重启;

      • always:总是重启。

  • [Install]

    ·Install一般填为WantedBy=multi-user.target,表示多用户环境下服务被启用。·

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值