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. React Native学习(一) 环境搭建

    需安装工具 RN环境: [必须] Node [必须] react-native-cli [可选] Node Package Manager(npm):node包管理工具,一般安装Node会带上npm ...

  2. 《重构-改善既有代码的设计》学习笔记---Replace Temp with Query(以查询取代临时变量)

    临时变量的问题在于: 它们是暂时的,而且只能在所属函数内使用.由于临时变量只在所属函数内可见,所以,如果很多地方都在用这个临时变量,就会驱使你写出更长的函数.如果把临时变量替换为一个查询,那么其他函数 ...

  3. php_screw安装,使用

    安装步骤:1. 下载源码:wget http://nchc.dl.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.g ...

  4. JavaBean找到项目下的文件这里是\WEB-INF\classes\下面的属性文件

    String baseinfo="/com/Bean/DBhelp.properties"; filename=getClass().getClassLoader().getRes ...

  5. Elasticsearch-6.7.0系列(一)9200端口 .tar.gz版本centos7环境--下载安装运行

    https://www.elastic.co/guide/index.html(推荐)        ES官方英文原版文档,一般会更新到最新版本 https://www.elastic.co/cn/d ...

  6. nmcli配置ipv6

    nmcli配置ipv6 作者:Eric 微信:loveoracle11g [root@racooler ~]# nmcli connection show eno16777736 | grep ipv ...

  7. 安卓版的pvr图片查看

    public class PVRTDecompress { /* author:FormatFa mail :1758759399@qq.com date :2017-6-14 */ //modify ...

  8. pyspider 笔记

    fetch_type='js' 运行 js代码

  9. 执行计划:SET AUTOTRACE TRACEONLY

    SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显 ...

  10. sbt 学习

    一.基础 1.工程根目录 包含build.sbt的目录是工程的根目录.注意,就算在一个空目录下面执行sbt about,也会生成project文件夹 2.源文件目录结构 SBT有固定的文件组织结构 s ...