[tldr] 如何给自己的程序编写一个systemd服务

news/2025/2/22 14:05:02/文章来源:https://www.cnblogs.com/xuhe2/p/18721734

参考Systemd 入门教程:实战篇

配置文件

systemd使用配置文件作为程序服务启动的方式,分为可以自启动的不能自启动的

就是enablestart的命令的区别

  • 分为/etc/systemd/system/usr/lib/systemd/system,使用其中的.service文件

服务信息解析

Loaded行:配置文件的位置,是否设为开机启动
Active行:表示正在运行
Main PID行:主进程ID
Status行:由应用本身(这里是 httpd )提供的软件当前状态
CGroup块:应用的所有子进程
日志块:应用的日志

写一个配置文件

打开.service文件即可开始编辑

  • 一个配置文件使用的键值对的方式,使用xxx=xxx

[Unit]区块

使用Description作为对服务的形容,Documentation字段给出文档位置

使用BeforeAfter字段展示服务的启动顺序,表示自己的服务应该依赖什么(但是不是真实的依赖关系)

依赖关系分为WantsRequires2个字段,分别是弱依赖和强依赖

[Service]区块

这里可以配置环境变量等服务的启动方式.

你可能会遇到EnvironmentFile环境参数配置文件,当然也可以不需要外部配置参数

这是.service配置文件的配置文件,在/etc/sysconfig/目录下

ExecStart字段:定义启动进程时执行的命令。

ExecStart=/usr/sbin/sshd -D $OPTIONS存放的是如何启动服务的方式

KillMode字段:定义 Systemd 如何停止 sshd 服务。

默认是清除所有的进程

Restart字段定义是否重启服务

遇到错误的时候很有用,配合RestartSec字段使用

最小实现

我们自己的项目添加systemd服务的支持的时候,添加一个最小最基本的服务

下面就是一个例子,可以通过简单修改之后作为自己的项目的systemd服务

[Unit]
Description=Github520cli auto update hosts config to access github[Service]
Type=simple
ExecStart=/home/xuhe/go/bin/github520cli --auto
Restart=always
RestartSec=1[Install]
WantedBy=multi-user.target

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887989.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows平台调试器原理与编写01.调试框架

调试器原理与编写01.调试框架-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 调试框架 调试器最基本功能: 断点,单步 断点分为三类软件断点 硬件断点 内存断点window提供了一套机制,帮助用户来实现一套3环的调试器 事件驱动 : 窗口的各种操作(外在的想要对窗…

本地部署DeepSeek-R1-AWQ

一、部署环境准备 系统信息:主机名为 10-200-3-23 IP 地址为 10.200.3.23 操作系统为 ubuntu 22.04 配备 8 卡 A100。二、驱动与桥接器安装安装 gcc执行命令 apt-get update -y apt install build-essential -y安装驱动下载驱动 wget https://us.download.nvidia.com/tesla/…

k8s部署nfs+sc

1.下载软件包nfs-subdir-external-provisioner-4.0.18.tgz 该软件包内文件截图 修改values.yaml 在目录内执行 helm install nfs-provisioner -f values.yaml . #老重要了2.查看执行是否成功 3.测试是否成功 编写yaml apiVersion: v1kind: PersistentVolumeClaimmetadata…

P2661 [NOIP 2015 提高组] 信息传递——染色做法

原题 本来想当水题刷的,结果被水题刷了。。。70到80到90到100,必须写个题解记录一下(doge) 题目分析一句话:求一个无权有向图中的最短环路(确保有环) tip:每一个点出度为一,那么必然有环,以样例为例如下。思路没必要每轮模拟全部的传送,只看某一个人的传送过程: 就…

有哪些好用的AI工具?(你想要的AI工具都在这)

1. 常见应用场景 1.1. 国内通用大模型模型名称 简介 官网地址DeepSeek 深度求索公司研发的高性能开源模型,以低成本、高推理能力著称,支持数学、代码等复杂任务。 https://chat.deepseek.com/豆包 字节跳动开发的智能语言模型,基于深度学习技术,支持多种自然语言处理任务。…

Kubernetes 集群上部署 Open WebUI

在前一篇博文中记录了 k8s 集群上部署 ollama + deepseek-r1:7b,这篇博文记录一下 Open WebUI 的部署。还是用 helm 部署,添加 open-webui 的 helm repo,准备 helm 清单文件,通过 helm 命令在 ai 命名空间下进行部署在前一篇博文中记录了 k8s 集群上部署 ollama + deepseek…

2025.2.22

Hehe_0 模拟赛内容随笔 [NOIP2015]金币1 2 3 4 。。。1 2-3 4-6 7-10 。。。观察数据范围1e4,暴力就行,然后可以去思考优化版本 由于已经把规律给出来了,所以可以提前离线处理出来,如果数据过大,可以预处理每一次金币变化的天数,然后根据提问二分找区间然后求和。这种数…

充电桩功能扩展,解决桩企内存不足的问题

OCPP(开放充电点协议)1.6是电动汽车充电基础设施中广泛使用的通信标准。尽管OCPP 1.6为充电桩与中央管理系统(CSMS)之间的交互提供了基本功能,但由于OCPP主板的内存资源有限,其能够实现的功能也受到了一定的限制。为了解决这一问题,OCPP协议网关作为OCPP主板的扩展,能够…

Spring复习-AOP

AOP的概念 AOP,Aspect Oriented Programming,面向切面编程,是对面向对象编程OOP的升华。OOP是纵向对一个事物的抽象,一个对象包括静态的属性信息,包括动态的方法信息等。而AOP是横向的对不同事物的抽象,属性与属性、方法与方法、对象与对象都可以组成一个切面,而用这种思…

Univer sheet加载上下文菜单卡死崩溃问题定位

背景: 我的应用技术栈是Vue3,Univer是基于react的,所以定位问题花了很久,在此记录一下查问题的方式。 使用Chrome DevTools的Performance进行录制,复现卡死操作后,在Performance Monitr中可以看到CPU Usage持续100%,且页面重计算次数持续飙高。由于页面卡死,Performanc…

乐园杂音

沟槽的杉井光为什么还不填坑! 其实兔子最早看的一批轻小说就有乐杂,但是那时候没有写读后感的习惯,现在重刷一遍乐杂,就顺便写一下读后感。兔子每次给别人看这张图都会让他们猜女主是谁。 其实吧,虽然普遍认为《离别的钢琴奏鸣曲》比《乐园杂音》写的要好,但是兔子更喜欢…

一张图搞懂支付账务

会计与程序语言虽不同,却能从相同维度描绘业务场景。如何利用这一原理,拆解支付账务的科目设置、对账与核算流程,建立起清晰的账务处理逻辑?让我们一起一探究竟。学习账务的时候你是否经常有这些疑问“待结算和待清算是什么?为什么要有已清算?待结算和待清算是一回事吗?…