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

参考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
posted @   xuhe2  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示