Simple Systemd Service Guide

主题

  • Systemd介绍
  • Systemd基本操作
  • 怎样编写_service_.service文件
  • 怎样部署service

Systemd介绍

  • Linux OS的系统和服务管理者
  • 兼容SysV初始化脚本(init scripts)
  • 提供如下功能特性:
    • 系统启动时系统服务的并行启动
    • Daemon程序的按需激活
    • 支持系统状态快照(snapshots)
    • 基于依赖的服务控制逻辑
  • systemd取代RHL7的Upstart,作为默认的init系统

Systemd基本操作

  • 启动服务

    systemctl start name.service

  • 停止服务

    systemctl stop name.service

  • 重启服务

    systemctl restart name.service

  • 重载配置

    systemctl reload name.service

  • 检查服务状态

    systemctl status name.service

  • 输出所有服务状态

    systemctl list-units --type service --all

  • 使能服务

    systemctl enable name.service

  • 禁止服务

    systemctl disable name.service

  • 列出所有服务并检查是否使能

    systemctl list-unit-files --type service

怎样编写name.service文件

name.service文件组成

  • [Unit]

    • 包含一般的选项,不依赖于单元类型(unit type)
    • 选项:提供单元描述,指定单元行为,设置对其他单元的依赖关系
  • [unit type]
    • 如果一个单元有特定的指令,则这些指令被组合在以单元类型命名的块下。
      比如,service单元文件包含在[Service]块中。
  • [Install]
    • 包含systemctl enable和disable命令使用的单元安装信息

重要的[Unit]块选项

  • Description

    单元有意义的描述信息,systemctl status命令输出中显示该文本信息。

  • Documentation

    提供该单元的URI引用文件列表。

  • After

    定义单元的启动顺序。该单元只在After指定的单元处于激活状态后才启动。

    Before选择与After功能相反。

  • Requires

    配置与其他单元的依赖关系。在Requires中的单元与该单元一起激活。

    如果任何需要的单元启动失败,这个单元就不会被激活。

  • Wants

    配置比Requires弱的依赖关系。

    如果任何列出的单元没有成功启动,也不会影响该单元的激活。

    建议用于建立定制单元依赖关系。

  • Conflicts

    配置反向的依赖关系,即与Requires配置相反的依赖。

重要的[Service]块选项

  • Type

    配置单元启动类型。影响ExecStart和其他相关选项的功能。

  • simple

    默认选项。ExecStart启动的进程为服务的主进程。

  • forking

    ExecStart启动的进程创建一个子进程作为服务的主进程。启动完成后父进程退出。

  • oneshot

    与simple相似,但是在启动后续的单元之前进程退出。

  • dbus

    与simple相似,但是仅在主进程得到D-bus名称之后才启动后续的单元。

  • notify

    与simple相似,但是仅在通过sd_notify()函数发送通知消息后才启动后续的单元。

  • idle
    与simple相似,但是直到所有job完成后,才真正执行服务的二进制程序,这避免与服务shell的状态输出信息混淆。

  • ExecStart

    当单元启动时,执行该选项指定的命令或脚本。

  • ExecStop

    当单元停止时,执行该选项指定的命令或脚本。

  • ExecReload

    当单元重装时,执行该选项指定的命令或脚本。

  • Restart

    如果该选项使能,当服务进程退出时,服务重启。作为systemctl stop命令的异常处理。

  • RemainAfterExit

    如果该选项设置为True,即使服务所有的进程退出,这个服务也被认为处于激活状态(active)。
    默认是False。
    当Type=oneshort配置时,这个选项有特殊的用处。

重要的[Install]块选项

  • Alias

    提供单元的额外名称,以空格隔开。除了systemctl enable,大部分sytemctl命令可以使用别名带去真正的单元名称。

  • RequiredBy

    依赖于该单元的其他单元列表。
    当该单元使能时,RequiredBy中的单元就会生成依赖于该单元的Require依赖关系。

  • WantedBy

    弱依赖于该单元的其他单元列表。
    当该单元使能时,WantedBy中的单元就会生成依赖于该单元的Want依赖关系。

  • Also

    指定和该单元一起安装或卸载的其他单元列表。

  • DefaultInstance

    限定的实例化单元。即该选项指定了该单元使能的默认实例。
    Limited to instantiated units, this option specifies the default instance for which the unit is enabled.

例子:自定义中断绑核服务

[Unit]
Description=Configure common_affinity service for system!
After=network.target

[Service]
Type=oneshot
ExecStart=/etc/init.d/common_affinity
ExecStop=/home/zxuss/affinity/superstop.sh
RemainAfterExit=True

[Install]
WantedBy=multi-user.target

怎样部署service

以自定义中断绑核服务为例子:

1.将name.service文件拷贝到/usr/lib/systemd/system/目录下
cp -f ${work_path}/common_affinity.service /usr/lib/systemd/system/

2.将服务启动脚本拷贝到/etc/init.d/目录,或者其他目录
cp -f ${work_path}/common_affinity /etc/init.d/

3.如果已经部署了name.service服务,则先禁止该服务,然后重新使能该服务
systemctl disable common_affinity.service
systemctl reenable common_affinity.service

4.如果没有部署过name.service服务,则直接使能name.service服务
systemctl enable common_affinity.service

参考文档:

Managing Services with systemd

systemd.service — Service unit configuration

How To Use Systemctl to Manage Systemd Services and Units

您的支持是对博主最大的鼓励,感谢您的认真阅读。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

Linux Simple Systemd Service Guide的更多相关文章

  1. .NET Worker Service 部署到 Linux 作为 Systemd Service 运行

    上一篇文章我们了解了如何将.NET Worker Service 作为 Windows 服务运行,今天我接着介绍一下如何将 Worker Service 部署到 Linux 上,并作为 Systemd ...

  2. systemd.service 中文手册

    版权声明 本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布. 无担保:本文译者不保证译文内容准确无误,亦不承担任何由于使用此文档所导致的损失. 自由使用:任何人都可以自 ...

  3. 如何编写一个Systemd Service(转)

    转自 https://segmentfault.com/a/1190000014740871 0x01 什么是Systemd Service Systemd 服务是一种以 .service 结尾的单元 ...

  4. Systemd: Service File Examples

    大多数Linux发行版使用 systemd作为系统服务管理工具. systemctl是systemd的主要命令,用于管理控制服务. 这篇文章中将介绍如何创建允许你使用systemctl命令的sysyt ...

  5. Linux之systemd服务配置及自动重启

    layout: post title: Linux之systemd服务配置及自动重启 date: 2019-09-09 tags: linux --- Linux之systemd服务配置及自动重启 0 ...

  6. HTTPSQS(HTTP Simple Queue Service)消息队列

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...

  7. systemd.service — 服务单元配置

    转载:http://www.jinbuguo.com/systemd/systemd.service.html 名称 systemd.service - 服务单元配置 大纲 service.servi ...

  8. systemd service

    Man page systemd.unit SYSTEMD.UNIT(5) systemd.unit SYSTEMD.UNIT(5) NAME systemd.unit - Unit configur ...

  9. CENTOS/RHEL 7 系统中设置SYSTEMD SERVICE的ULIMIT资源限制

    遇到的问题: golang程序一直出现 too many open files的报错, 尽管对 /etc/security/limits.conf 做了设置, 对最大文件打开数,最大进程数做了调优. ...

随机推荐

  1. ArcEngine 调用GP里面的Merge工具

    这两天,为ArcEngine中的Merge工具的调试伤头脑筋,明明很简单的事情,就是搞不掂儿.今天忽然想到是否是中文的关系,果然,把中文修改成英文成功了.真是快郁闷死了! public static ...

  2. Routemanage类方法详解

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Ref ...

  3. js中使用showModelDialog中下载文件的时候,闪一下后无法下载

    在js中使用showModelDialog中下载文件的时候,会因为showModelDialog自动设置target为_self导致下载文件“只会闪一下”就消失掉 在吧target设置为_blank后 ...

  4. html5课件外包-----swf/AS2/AS3/fla/ppt课件如何转换为html5交互课件/动画

    随着Adobe公司公布2020年将不再更新和维护flash,flash逐渐被html5取代,很多教育机构都在面临着如何将自己的flash交互课件产品转换到html5版本的问题,最近遇到非常多的客户一上 ...

  5. 使用密钥登录CentOS系统(基于密钥的认证)

    在Window客户端有多种软件可以登陆ssh,比如putty,xshelll,secureCRT,我就以xshell为例设置使用公钥和私钥验证登陆服务器. 使用Xshell密钥认证机制远程登录Linu ...

  6. 关于栈、队列、优先队列的应用——UVa11995

    这本来是上一篇博客里的内容,但不知道什么原因breakdown了……我就简单放上一道题好了 题意:这道题的题目是“猜猜数据结构”,题意就是给你一些输入输出数据,让你根据这些数据判断是什么数据结构.要猜 ...

  7. Windows下安装MySQL8

    转自:https://blog.csdn.net/star_in_shy/article/details/82691330  感谢! 一.MySQL官网下载 (一)MySQL下载地址:https:// ...

  8. Winform 实现跨线程以及Timer

    https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.exited?redirectedfrom=MSDN&am ...

  9. C#开发微信支付之企业向用户付款

    1.企业付款的介绍 所谓企业付款指的是,在功能开放后诸如保险行业的客户理赔.退保.商品退款.发放征集活动奖金.抽奖互动等操作都可以通过企业付款完成.而此前,微信支付只能提供客户向企业单向付款. 商户如 ...

  10. 理解inode如何指向block

    一个inode编号如何实现,指向n多个block块的呢? 本质: 第一步:在CentOS系统中目录/tmp下 touch {01..12} 个文件: 然后mkdir block目录 第二步:cd切换到 ...