首页 > 其他分享 >Systemd 配置服务管理

Systemd 配置服务管理

时间:2024-06-05 19:22:48浏览次数:19  
标签:systemd 服务 定义 启动 配置 Systemd myservice

原创转载:https://blog.csdn.net/qq_41084756/article/details/130200523

1:Systemd 案例

systemd 是 Linux 系统中现代化的初始化系统,可以使用 systemctl 命令实现管理 启动、关闭、自启动 等服务。

在systemd中,可以通过创建一个service文件,把要执行的命令放在其中,然后将其添加到systemd的自启动项中。

具体操作步骤如下:

0x01:在 /etc/systemd/system 目录下创建一个.service 文件。

# 注意 service 文件的名字也是 systemd 启动的名字,例如 systemctl start myservice
vim /etc/systemd/system/myservice.service

0x02:编写.service 文件。

# 在打开的文件中添加以下内容,注意将其中的 ExecStart 替换为需要管理的命令或脚本
[Unit]
Description=My Service
After=network.target

[Service]
Type=simple
ExecStart=sudo /path/to/my/command
User=root

[Install]
WantedBy=multi-user.target

0x03:以下是 service 文件中出现的参数解释。

Unit: systemd服务文件的一个部分,用于定义服务的基本信息。

  • Description字段包含了一个简短的描述,用于描述服务的名称,方便用户在查找时快速了解服务的作用。
  • After=network.target表示此服务会在网络服务启动后启动。
    • network.target是指网络目标单元,是Systemd中预定义的一个特殊单元,用于表示网络服务的启动状态。几乎所有的网络服务,例如DHCP、DNS解析等,在启动时都依赖于网络服务的可用性。因此,将After=network.target添加到服务的unit文件中,可以确保该服务在网络服务就绪后再启动,从而避免出现启动时的依赖性错误。

Service: 是systemd服务文件中的另一个部分,用于定义服务的具体行为。

  • Type字段是服务运行时的类型,simple表示它是一个后台进程,通常用于只有一个进程的服务。
  • ExecStart字段包含了要运行的命令,多个命令可以用换行符(\n)隔开。
  • User字段指定了以哪个用户的身份运行这个服务,这里选择root用户。

Install: 定义了systemd服务的安装信息。

  • WantedBy字段指定了服务将要执行的“target”(一种操作系统运行级别),这里指定的“multi-user.target”是Linux系统默认的、包含多个用户的运行级别,相当于传统的“init 3”运行级别。这意味着服务将在系统启动时自动运行。

2:Systemd 命令

# 保存并退出上述 Systemd 案例,启动服务&系统自启动  
systemctl start myservice
systemctl enable myservice

# 使用 systemctl命令查看服务状态: 
systemctl status myservice.service

# 关闭服务&系统关闭自启动
systemctl stop myservice
systemctl disable myservice

3:Systemd 文件

3.1:介绍

Systemd 服务文件通常存放在 /etc/systemd/system 目录下。

Systemd 服务文件通常是以 .service 结尾的文本文件。

服务文件中的格式类似 .ini 配置文件的格式,以 字段 + 键值对 的形式组成。

3.2:字段

Systemd 服务文件通常包含了以下 [字段],每个字段下可配置多个键值对。

配置项 作用
Unit 服务的全局信息和依赖性声明,如服务名称、描述等。
Service 指定服务的具体配置,如服务执行的命令、工作目录等。
Instal 指定服务的安装方式,如服务的启动级别等。

3.3:键值对

0x01:[Unit] 字段的配置

Key Value
Description 对服务的简短描述。
Before 定义服务在其他服务之前启动。
After 定义服务在其他服务之后启动。
Requires 定义服务启动需要哪些其他服务已启动,否则无法启动。
PartOf 定义该服务是其他服务的一部分,如果其他服务停止,该服务也会停止。
Wants 定义服务启动时可同时启动哪些其他服务。
Condition... 定义服务启动的条件,如 ConditionPathExists 表示某个路径存在时才启动该服务。

0x02:[Service] 字段的配置

Key Value
Type 服务类型,可以是simple、forking、ondemand、notify等。
ExecStart 服务启动命令,可以是单个命令、脚本文件、或者多个命令组成的脚本。
ExecStop 停止服务的命令。
User 定义服务运行的用户。
Group 定义服务运行的用户组。
PrivateTmp 将服务的/tmp目录挂载到私有的命名空间中,以增强安全性。
Restart 定义服务异常退出时如何重启。
WorkingDirectory 定义服务工作目录。
Environment 定义服务的环境变量等。
ProtectSystem 防止服务对系统文件进行修改。
NoNewPrivileges 防止服务通过setuid或setgid等提升权限。

0x03:[Install] 字段的配置

Key Value
WantedBy 定义在哪些系统运行级别下启用此服务。
RequiredBy 启动其他系统服务时必需启动此服务。

3.4:示例

这个示例中定义了一个名为"MyService"的服务,服务启动时执行 /usr/bin/myservice 命令,执行工作目录为 /var/myservice,运行用户为 myservice。

如果服务异常退出,则每30秒尝试重新启动,最多尝试3次。

最后,服务将在多用户运行级别下启用。

[Unit]
Description=MyService
After=network.target
  
[Service]
Type=simple
ExecStart=/usr/bin/myservice
WorkingDirectory=/var/myservice
User=myservice
Group=myservice
Restart=always
RestartSec=30
StartLimitInterval=400
StartLimitBurst=3
  
[Install]
WantedBy=multi-user.target

标签:systemd,服务,定义,启动,配置,Systemd,myservice
From: https://www.cnblogs.com/hetaotao0919/p/18233632

相关文章

  • 【调试笔记-20240601-Linux-在 OpenWRT-23.05 上配置 frpc 实现内网穿透】
    调试笔记-系列文章目录调试笔记-20240601-Linux-在OpenWRT-23.05上配置frpc实现内网穿透文章目录调试笔记-系列文章目录调试笔记-20240601-Linux-在OpenWRT-23.05上配置frpc实现内网穿透前言一、调试环境操作系统:OpenWrt23.05.3调试环境调试目标二、调试步......
  • eladmin-mp 低代码生成后台页面和服务端java代码接口调研
    概述总体这个项目前端使用vue2,后端使用springbootgit地址https://github.com/elunez/eladmin-mp预览地址https://eladmin.vip/demo/#/sys-tools/generator数据表配置低代码下载生成后的前端代码示例生成的后端代码示例:这里可以配置生成自动放在项目的目录......
  • OpenFeign的配置和使用
    OpenFeign利用Nacos实现了服务的治理,利用RestTemplate实现了服务的远程调用。但是远程调用的代码太复杂了,而且这种调用方式,与原本的本地方法调用差异太大,编程时的体验也不统一,一会儿远程调用,一会儿本地调用。因此,我们必须想办法改变远程调用的开发模式,让远程调用像本地方法调......
  • 服务器部署-docker-容器版本
    后端部署准备docker环境,拉取所需镜像正式安装docker环境:1)较旧的Docker版本称为docker或docker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。[root@localhost~]#sudoyumremovedocker\docker-clientdocker-client-latestdocker-commondocker-la......
  • 钉钉机器人远程重启系统服务
    fromflaskimportFlask,requestimportsubprocessapp=Flask(__name__)@app.route('/send_message',methods=['GET'])defsend_message():webhook_url='https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN'#......
  • 快速一键化部署后端服务到k8s
    首先具备1、创建DockerfileFROMopenjdk:17RUNecho"Asia/Shanghai">/etc/timezoneWORKDIR/appCOPY*.jar/app/COPYpod_start.sh/app/RUNchmod+x/app/pod_start.shENTRYPOINT["/app/pod_start.sh"]2、pod_start.sh#!/bin/bashecho&......
  • VSCode中配置CMake+GLFW渲染基础-轻量级架构
    一、核心基础库下载1、GLFW库下载   下载链接如下:进入Download|GLFWGLFWsourcecodeandbinarydistributiondownloadlinks.https://www.glfw.org/download.html 选择2、GLAD库下载  下载链接如下:https://glad.dav1d.de/WebgeneratorfortheGladtoolht......
  • Java环境配置(超详细)
    Java环境配置(超详细)引言1、安装JDK1.1、下载安装JDK1.2、配置环境变量:JAVA_HOME1.3、将JAVA_HOME添加到Path中2、安装Maven2.1、下载安装Maven2.2、配置maven的环境变量:M2_HOME2.3、将Maven变量添加到Path中引言Java开发环境的配置主要是安装JDK和Maven。1、......
  • Java1.8语言+ springboot +mysql + Thymeleaf 全套家政上门服务平台app小程序源码
    Java1.8语言+springboot+mysql +Thymeleaf 全套家政上门服务平台app小程序源码家政系统是一套可以提供上门家政、上门维修、上门洗车、上门搬家等服务为一体的家政平台解决方案。它能够与微信对接、拥有用户端小程序,并提供师傅端app,可以帮助创业者在不需要相关技术人员及......
  • Nacos配置
    Nacos注册中心目前开源的注册中心框架有很多,国内比较常见的有:Eureka:Netflix公司出品,目前被集成在SpringCloud当中,一般用于Java应用Nacos:Alibaba公司出品,目前被集成在SpringCloudAlibaba中,一般用于Java应用Consul:HashiCorp公司出品,目前集成在SpringCloud中,不限制微服务语言......