Linux Simple Systemd Service Guide

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

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

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

原文地址:https://www.cnblogs.com/smith9527/p/10300561.html

时间: 2024-08-13 08:44:49

Linux Simple Systemd Service Guide的相关文章

linux 下的 service 和systemctl 服务管理方式

linux 下的 service  和systemctl 服务管理方式 man service 得到:执行一个system V 风格的启动脚本 service - run a System V init script man systemctl 得到: 控制systemd 系统和服务管理器 systemctl - Control the systemd system and service manager systemd:完全替代init,可并行启动服务,并能减少在shell上的系统开销,相比传

systemd service

Man pagesystemd.unitSYSTEMD.UNIT(5) systemd.unit SYSTEMD.UNIT(5) NAME systemd.unit - Unit configuration SYNOPSIS service.service, socket.socket, device.device, mount.mount, automount.automount, swap.swap, target.target, path.path, timer.timer, snapsh

Amazon SQS(Simple Queue Service) 简介

SQS即Simple Queue Service, 是一个分布式的消息队列服务,使用它非常简单,消息队列服务可以用来buffer burst, 使整个服务异步处理,不要求组件始终可用. 开发人员最初使用 Amazon SQS 时只需用到五个 API: CreateQueue.SendMessage.ReceiveMessage.ChangeMessageVisibility 和 DeleteMessage. Amazon SQS 会尽量保持消息顺序,但是由于队列的分布式特性,SQS无法保证发送消

Linux命令中service的用法

用途说明 service命令用于对系统服务进行管理,比如启动(start).停止(stop).重启(restart).查看状态(status)等.相关的命令还包括chkconfig.ntsysv等,chkconfig用于查看.设置服务的运行级别,ntsysv用于直观方便的设置各个服务是否自动启动.service命令本身是一个shell脚本,它在/etc/init.d/目录查找指定的服务脚本,然后调用该服务脚本来完成任务. 看看下面的手册页可能更加清楚的了解service的内幕:service运行

将java打jar包成linux后台服务service

将java打jar包成linux后台服务service 第一步:将java程序打成jar包 build.gradle配置文件中加spring-boot-gradle-plugin插件,具体配置如下(配置完成后刷新gradle项目) plugins {   id 'org.springframework.boot' version '1.5.4.RELEASE' } springBoot {   executable = true } 打包,在build.gradle所在的目录下,运行如下命令 g

RHEL/CentOS 7中Nginx的systemd service

源码安装的nginx ,没有systemd service 管理 nginx 下面教程,告诉你如何设置nginx 的systemd service nginx systemd的服务文件是/usr/lib/systemd/system/nginx.service [Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-look

Linux下使用service启动jar包

描述: linux系统,以服务的方式启动jar,例如: systemctl restart xxx systemctl stop xxx systemctl status xxx 步骤: 1. cd etc/systemd/system2. 新增一个 服务名称.service文件 [Unit] Description=harry-admin service #服务描述 [Service] WorkingDirectory=/home/kangaroo-parts/ #指定服务的工作目录 Priv

走进Linux之systemd启动过程

Linux系统的启动方式有点复杂,而且总是有需要优化的地方.传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统被认为有效率不足的问题,systemd是Linux系统机器的另一种启动方式,宣称弥补了以传统Linux SysV init为 基础的系统的缺点.在这里我们将着重讨论systemd的特性和争议,但是为了更好地理解它,也会看一下通过传统的以SysV init为基础的系统的Linux启动过程是什么样的.友情提醒一下,syst

Linux的systemd特性及gawk使用

1. 简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理 Systemd的新特性: 系统引导时实现服务并行启动: 按需激活进程: 系统状态快照: 基于依赖关系定义服务控制逻辑: 核心概念:unit unit由其相关配置文件进行标识.识别和配置:文件中主要包含了系统服务.监听的socket.保存的快照以及其它与init相关的信息: 这些配置文件主要保存在: /usr/lib/systemd/system /run/system