您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

如何在Linux上创建Systemd服务

时间:2023-02-01 15:09:09  来源:今日头条  作者:提燈人

如何创建Systemd服务

1、Systemd服务 脚本一般存放在:/usr/lib/systemd 目录下, 目录下又有usersystem之分

/usr/lib/systemd/system # 系统服务,开机不需要登录就能运行的程序(相当于开机自启)
/usr/lib/systemd/user # 用户服务,需要登录后才能运行的程序

2、在/usr/lib/systemd/system或/usr/lib/systemd/user创建“your-service.service”文件并写入如下示例

[Unit]
Description=<description about this service>

[Service]
User=<user e.g. root>
WorkingDirectory=<directory_of_script e.g. /root>
ExecStart=<script which needs to be executed>
Restart=always

[Install]
WantedBy=multi-user.target

3、保存后执行:

sudo systemctl daemon-reload #重新加载服务

4、启动服务:

sudo systemctl start your-service.service

5、查看服务状态:

sudo systemctl status your-service.service

6、设置服务开启启动:

sudo systemctl enable your-service.service

7、停止服务:

sudo systemctl disable your-service.service

脚本参数说明

[Unit]模块参数

Description

简单的服务描述

Documentation

文档链接,多个文档用空格隔开,支持以下协议文档http://, https://, file:, info:, man:.

Requires

配置需要依赖的服务。如果本服务已经启动,那么依赖服务肯定也已经全部启动。如果依赖服务中有任何一个服务启动失败,那么systemd不会启动本服务。多个依赖服务用空格隔开。

Wants

与Requires类似,但是这里设定的服务启动失败不会影响本服务启动。

BindsTo

与Requires类似,但是如果依赖服务关闭,那么本服务也会停止。

PartOf

与Requires类似,但是依赖服务停止和重启也同样会停止和重启本服务。

Conflicts

设定冲突服务,如果设定的服务已经启动,那么本服务将不会启动。多个服务用空格隔开。

Before, After

设定在本服务启动“前”、“后”需要启动的服务。多个服务用空格隔开。

OnFAIlure

设定如果本服务发生错误,需要启动的服务。多个服务用空格隔开。

[Service]模块参数

Type

字段定义启动类型。它可以设置的值如下。

  • simple(默认值):ExecStart字段启动的进程为主进程
  • forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
  • oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
  • dbus:类似于simple,但会等待 D-Bus 信号后启动
  • notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
  • idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合

RemainAfterExit

是否在服务所有进程都退出时还认为该服务在启动状态,默认为否。

GuessMainPID

A boolean value that specifies whether systemd should guess the main PID of a service if it cannot be determined reliably. This option is ignored unless Type=forking is set and PIDFile is not set. Defaults to yes.

PIDFile

设置一个绝对路径的文件来存储服务的PID。

An absolute filename pointing to the PID file of this daemon. Use of this option is recommended for services where Type=forking. Systemd reads the PID of the main process of the daemon after start-up of the service. Systemd does not write to the file configured here, although it removes the file after the service has shut down.

ExecStart

定义启动进程时执行的命令。

ExecStartPre, ExecStartPost

启动服务之前(之后)执行的命令。

ExecReload

重启服务时执行的命令。

ExecStop

停止服务时执行的命令。

ExecStopPost

停止服务之后执行的命令。

RestartSec

在重启服务之前等待时间。

TimeoutStartSec

等待服务启动的时间。

TimeoutStopSec

等待服务停止的时间。

TimeoutSec

该参数设置后同时设置TimeoutStartSec 和 TimeoutStopSec参数。

RuntimeMaxSec

服务最长启动时间。默认是无限制。

Restart

服务退出或者被kill掉后是否重新启动

  • no(默认值):退出后不会重启
  • on-success:只有正常退出时(退出状态码为0),才会重启
  • on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
  • on-abnormal:只有被信号终止和超时,才会重启
  • on-abort:只有在收到没有捕捉到的信号终止时,才会重启
  • on-watchdog:超时退出,才会重启
  • always:不管是什么退出原因,总是重启

WorkingDirectory

指定服务执行的根目录

[Install]模块参数

WantedBy

通常是定义哪些target能够运行服务一般是multi-user.target

参考:

https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html

https://www.freedesktop.org/software/systemd/man/systemd.exec.html#WorkingDirectory=

https://docs.fedoraproject.org/en-US/quick-docs/understanding-and-administering-systemd/#_unit_parameters

所有参数设置参考:

https://www.freedesktop.org/software/systemd/man/systemd.directives.html



Tags:Linux上   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Linux上使用Docker实现应用程序打包和分发
在Linux上使用Docker可以实现应用程序的打包和分发,这是因为Docker提供了一个轻量级、可移植和隔离的容器化平台,可以将应用程序及其所有依赖项打包到一个可移植的容器中。下...【详细内容】
2023-10-27  Search: Linux上  点击:(358)  评论:(0)  加入收藏
在Linux上部署多节点Docker集群
在Linux上部署多节点Docker集群是一种常见的方式,可以提供高可用性和扩展性。下面将介绍如何在Linux上部署多节点Docker集群,并涵盖以下内容:1、选择适当的操作系统和版本2、安...【详细内容】
2023-09-11  Search: Linux上  点击:(276)  评论:(0)  加入收藏
linux上SQL Server 配置管理器的使用
概述我们知道Windows平台上的SQL Server 配置管理器是一个图形工具,用于管理与 SQL Server 关联的服务、配置 SQL Server 使用的网络协议以及管理 SQL Server 客户端计算机的...【详细内容】
2023-08-24  Search: Linux上  点击:(308)  评论:(0)  加入收藏
在linux上如何安装docker
在Linux上安装Docker通常可以通过以下步骤完成: 卸载旧版本的Docker(如果有):sudo apt-get remove docker docker-engine docker.io containerd runc 更新包管理器:sudo apt-get...【详细内容】
2023-05-19  Search: Linux上  点击:(285)  评论:(0)  加入收藏
如何在Linux上创建Systemd服务
如何创建Systemd服务1、Systemd服务 脚本一般存放在:/usr/lib/systemd 目录下, 目录下又有user和system之分/usr/lib/systemd/system # 系统服务,开机不需要登录就能运行的程...【详细内容】
2023-02-01  Search: Linux上  点击:(239)  评论:(0)  加入收藏
在Linux上保护SSH服务器连接的8种方法
SSH 是一种广泛使用的协议,用于安全地访问 Linux 服务器。大多数用户使用默认设置的 SSH 连接来连接到远程服务器。但是,不安全的默认配置也会带来各种安全风险。具有开放 SSH...【详细内容】
2022-07-13  Search: Linux上  点击:(471)  评论:(0)  加入收藏
Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
1. 前言本文主要讲解如何在Linux上使用tinyproxy搭建HTTP/HTTPS代理器。tinyproxy是一个HTTP/HTTPS代理。它是轻量级的、快速的、非常容易配置的,而且是一个开源的代理服务。...【详细内容】
2021-12-08  Search: Linux上  点击:(1300)  评论:(0)  加入收藏
Linux上,最常用的十条命令
不知道大家平时都是用的什么操作系统来进行开发,但是对于编程开发而言,肯定Linux系统和mac系统是非常友好的。而用这两个系统,肯定都要用到命令行,而命令行要通过命令输入来进行...【详细内容】
2021-05-18  Search: Linux上  点击:(381)  评论:(0)  加入收藏
Linux上TCP的几个内核参数调优
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数...【详细内容】
2021-03-09  Search: Linux上  点击:(289)  评论:(0)  加入收藏
在Linux上使用finger命令查询登录用户信息
1. 前言本文主要讲解finger命令的作用和日常使用案例。finger命令是一个用户信息查询命令,它给出了所有登录用户的详细信息。此工具通常由系统管理员使用。它提供了登录名、...【详细内容】
2020-06-03  Search: Linux上  点击:(423)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(9)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(24)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(16)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(15)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(59)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(53)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(58)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(84)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(72)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(90)  评论:(0)  加入收藏
站内最新
站内热门
站内头条