0

0

Linux自定义服务编写_systemd单元文件说明【指导】

舞夢輝影

舞夢輝影

发布时间:2026-01-02 17:37:49

|

786人浏览过

|

来源于php中文网

原创

必须编写符合systemd规范的.service单元文件,包含[Unit](描述与依赖)、[Service](Type、ExecStart等)、[Install](WantedBy)三节;按Type=simple、forking或oneshot配置启动行为,并通过daemon-reload、enable、start及journalctl验证。

linux自定义服务编写_systemd单元文件说明【指导】

如果您需要在Linux系统中将自定义脚本或程序作为系统服务长期运行,则必须为其编写符合systemd规范的单元文件。以下是编写systemd服务单元文件的具体步骤与说明:

一、理解service单元文件基本结构

systemd服务单元文件以.service为后缀,由多个节(Section)组成,每个节以方括号标识,如[Unit]、[Service]、[Install]。各节承担不同职责:[Unit]描述服务元信息及依赖关系;[Service]定义进程启动行为;[Install]控制服务启用状态。

1、创建纯文本文件,命名格式为your-service-name.service,存放于/etc/systemd/system/目录下。

2、文件开头必须包含[Unit]节,并至少设置Description字段,用于描述服务用途。

3、[Service]节中必须指定Type(如simple、forking、oneshot等)和ExecStart(指定可执行命令路径)。

4、[Install]节中需配置WantedBy字段(如multi-user.target),否则systemctl enable将报错。

二、编写最小可用service单元文件

最简可行的服务单元文件仅需满足systemd语法校验与基础启动能力,不依赖复杂逻辑或环境变量

1、使用文本编辑器新建文件:sudo nano /etc/systemd/system/hello-world.service

2、写入以下内容:

[Unit]
Description=Hello World Test Service
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/echo "Hello from systemd!"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

3、保存并退出编辑器。

4、重新加载unit配置:sudo systemctl daemon-reload

三、配置守护进程类服务(Type=simple)

适用于前台持续运行的常驻进程,如自定义HTTP服务器、日志监听器等,systemd默认等待ExecStart启动的主进程结束即视为服务终止。

魔术橡皮擦
魔术橡皮擦

智能擦除、填补背景内容

下载

1、确保目标程序支持前台运行且不自动转入后台(禁用daemonize选项)。

2、在[Service]节中设置:Type=simple,并指定完整路径的ExecStart命令。

3、添加Restart策略防止意外退出:Restart=on-failure,RestartSec=5可设定重启延迟。

4、如需限制资源,可加入MemoryLimit=512M、CPUQuota=50%等参数。

四、适配传统SysV风格后台服务(Type=forking)

针对调用fork()两次、父进程立即退出的传统守护进程(如早期nginxredis-server),systemd需识别真正的主进程PID。

1、在[Service]节中声明:Type=forking

2、必须提供PIDFile=路径,指向服务写入的PID文件(如/var/run/myapp.pid)。

3、ExecStartPre可前置执行创建运行目录或授权操作,例如:ExecStartPre=/usr/bin/mkdir -p /var/run/myapp

4、确认对应程序实际生成PID文件,否则systemd无法追踪主进程,导致start超时失败。

五、启用并验证服务配置

完成单元文件编写后,需通过systemd工具链验证语法正确性、权限合规性及运行时行为是否符合预期。

1、检查语法错误:sudo systemd-analyze verify /etc/systemd/system/your-service-name.service

2、启用服务(开机自启):sudo systemctl enable your-service-name.service

3、立即启动服务:sudo systemctl start your-service-name.service

4、查看实时日志:sudo journalctl -u your-service-name.service -f

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

227

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

491

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

496

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

223

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

329

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3505

2024.08.07

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

957

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

621

2023.11.14

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.4万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号