[tldr] 如何给自己的程序编写一个systemd服务
配置文件
systemd使用配置文件作为程序服务启动的方式,分为可以自启动的和不能自启动的
就是
enable
和start
的命令的区别
- 分为
/etc/systemd/system
和/usr/lib/systemd/system
,使用其中的.service
文件
服务信息解析
Loaded行:配置文件的位置,是否设为开机启动
Active行:表示正在运行
Main PID行:主进程ID
Status行:由应用本身(这里是 httpd )提供的软件当前状态
CGroup块:应用的所有子进程
日志块:应用的日志
写一个配置文件
打开.service文件即可开始编辑
- 一个配置文件使用的键值对的方式,使用
xxx=xxx
[Unit]区块
使用Description
作为对服务的形容,Documentation
字段给出文档位置
使用Before
和After
字段展示服务的启动顺序,表示自己的服务应该依赖什么(但是不是真实的依赖关系)
依赖关系分为Wants
和Requires
2个字段,分别是弱依赖和强依赖
[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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)