百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

Linux systemd的service配置说明及举例

yuyutoo 2024-10-12 00:29 8 浏览 0 评论

systemd服务文件包含[Unit]、[Service]和[Install]三个节,各自包含不同作用的配置参数。

[Unit]:

- Description: 服务描述,用于systemctl status输出。例如:Description=My Service
- Documentation: 服务文档路径。例如:Documentation=man:my_service(1)
- Requires: 当前服务依赖的其他服务。例如:Requires=network.target
- Wants: 当前服务常见的依赖服务。例如:Wants=syslog.service
- After: 定义启动顺序,表明该服务应在另一服务之后启动。例如:After=rc-local.service
- Before: 定义启动顺序,表明该服务应在另一服务之前启动。例如:Before=poweroff.target

[Service]:

- Type: 定义启动类型(simple、forking、oneshot、dbus、notify等)。例如:Type=simple。

simple: 默认值,执行ExecStart指定的命令启动主进程。主进程退出时,服务停止。

forking: 执行ExecStart启动主进程,主进程随后将调用fork()成为后台进程。主进程退出时,服务不会停止。

oneshot: 执行ExecStart命令,并立即停止服务。这种类型的服务启动后不会继续运行。

dbus: 同时启动ExecStart定义的命令和D-Bus一样的守护进程。D-Bus 守护进程启动dbus-daemon。当D-Bus守护进程退出时,服务停止。

notify: 执行ExecStart命令启动主进程。当进程启动后,会向systemd发送一个就绪通知。然后服务停止,但当前进程会继续运行。这通常用于类型为oneshot的服务,以异步的方式启动服务。

idle: 当有其他任务完成时执行ExecStart命令。这确保该服务会在cpu空闲时启动。


- ExecStart: 服务启动命令。例如:ExecStart=/usr/sbin/my_service。
- ExecStartPre: 启动前执行的命令。例如:ExecStartPre=/bin/echo Starting my_service
- ExecStartPost: 启动后执行的命令。例如:ExecStartPost=/bin/echo Started my_service
- ExecReload: 服务重载命令。例如:ExecReload=/bin/kill -HUP $MAINPID
- ExecStop: 服务停止命令。例如:ExecStop=/bin/kill $MAINPID
- ExecStopPost: 停止后执行的命令。例如:ExecStopPost=/bin/echo Stopped my_service
- Restart: 定义何种条件下会自动重启服务。例如:Restart=always
- RestartSec: 自动重启的间隔。例如:RestartSec=30
- LimitMEMLOCK: 限制最大可锁定内存大小。例如:LimitMEMLOCK=infinity 相当于/etc/security/limits.conf里配置 [进程名]
hard memlock unlimited,而不需要重启
- OOMScoreAdjust: 定义OOM优先级。例如:OOMScoreAdjust=-1000,取值范围为[-1000,1000] 值越小越容易被操作系统oom kill.相当于
echo 某个数值 > /proc/PID/oom_score_adj
- NoNewPrivileges: 设置是否允许获取附加权限。例如:NoNewPrivileges=true

[Install]节:

- WantedBy: 表示当前服务被哪个target激活,在该target启动时会启动当前服务。例如:WantedBy=multi-user.target
- RequiredBy: 当前服务被哪个服务激活,当前服务通常作为依赖服务存在。例如: RequiredBy=my_other_service.service
- Alias: 为服务创建别名,可用于启动服务。例如:Alias=my_service.target以下是一个配置实例:

[Unit]
Description=My Service
After=network.target

[Service] 
ExecStart=/usr/sbin/my_service 
ExecStartPre=/bin/echo Starting my_service
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
LimitMEMLOCK=infinity
OOMScoreAdjust= -500

[Install]
WantedBy=multi-user.target
Alias=my_service.target

这个服务文件定义了一个名为My Service的服务,它在网络启动后启动,启动命令为/usr/sbin/my_service,在启动前会输出一条提示,配置了重载和重启功能,没有内存锁定限制,并设置了中等的OOM优先级,属于multi-user.target,有一个别名my_service.target。希望上述解释能帮助您全面理解systemd服务文件各参数的作用和用法。如果您在编写和配置服务文件时还有疑问,欢迎与我联系。我将提供更加详细和深入的讲解,以及各种配置实例来增强您的实践技能

相关推荐

当 Linux 根分区 (/) 已满时如何释放空间?

根分区(/)是Linux文件系统的核心,包含操作系统核心文件、配置文件、日志文件、缓存和用户数据等。当根分区满载时,系统可能出现无法写入新文件、应用程序崩溃甚至无法启动的情况。常见原因包括:...

玩转 Linux 之:磁盘分区、挂载知多少?

今天来聊聊linux下磁盘分区、挂载的问题,篇幅所限,不会聊的太底层,纯当科普!!1、Linux分区简介1.1主分区vs扩展分区硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两...

Linux 文件搜索神器 find 实战详解,建议收藏

在Linux系统使用中,作为一个管理员,我希望能查找系统中所有的大小超过200M文件,查看近7天系统中哪些文件被修改过,找出所有子目录中的可执行文件,这些任务需求...

Linux 操作系统磁盘操作(linux 磁盘命令)

一、文档介绍本文档描述Linux操作系统下多种场景下的磁盘操作情况。二、名词解释...

Win10新版19603推送:一键清理磁盘空间、首次集成Linux文件管理器

继上周四的Build19592后,微软今晨面向快速通道的Insider会员推送Windows10新预览版,操作系统版本号Build19603。除了一些常规修复,本次更新还带了不少新功能,一起来了...

Android 16允许Linux终端使用手机全部存储空间

IT之家4月20日消息,谷歌Pixel手机正朝着成为强大便携式计算设备的目标迈进。2025年3月的更新中,Linux终端应用的推出为这一转变奠定了重要基础。该应用允许兼容的安卓设备...

Linux 系统管理大容量磁盘(2TB+)操作指南

对于容量超过2TB的磁盘,传统MBR分区表的32位寻址机制存在限制(最大支持2.2TB)。需采用GPT(GUIDPartitionTable)分区方案,其支持64位寻址,理论上限为9.4ZB(9....

Linux 服务器上查看磁盘类型的方法

方法1:使用lsblk命令lsblk输出说明:TYPE列显示设备类型,如disk(物理磁盘)、part(分区)、rom(只读存储)等。...

ESXI7虚机上的Ubuntu Linux 22.04 LVM空间扩容操作记录

本人在实际的使用中经常遇到Vmware上安装的Linux虚机的LVM扩容情况,最终实现lv的扩容,大多数情况因为虚机都是有备用或者可停机的情况,一般情况下通过添加一块物理盘再加入vg,然后扩容lv来实...

5.4K Star很容易!Windows读取Linux磁盘格式工具

[开源日记],分享10k+Star的优质开源项目...

Linux 文件系统监控:用脚本自动化磁盘空间管理

在Linux系统中,文件系统监控是一项非常重要的任务,它可以帮助我们及时发现磁盘空间不足的问题,避免因磁盘满而导致的系统服务不可用。通过编写脚本自动化磁盘空间管理,我们可以更加高效地处理这一问题。下面...

Linux磁盘管理LVM实战(linux实验磁盘管理)

LVM(逻辑卷管理器,LogicalVolumeManager)是一种在Linux系统中用于灵活管理磁盘空间的技术,通过将物理磁盘抽象为逻辑卷,实现动态调整存储容量、跨磁盘扩展等功能。本章节...

Linux查看文件大小:`ls`和`du`为何结果不同?一文讲透原理!

Linux查看文件大小:ls和du为何结果不同?一文讲透原理!在Linux运维中,查看文件大小是日常高频操作。但你是否遇到过以下困惑?...

使用 df 命令检查服务器磁盘满了,但用 du 命令发现实际小于磁盘容量

在Linux系统中,管理员或开发者经常会遇到一个令人困惑的问题:使用...

Linux磁盘爆满紧急救援指南:5步清理释放50GB+小白也能轻松搞定

“服务器卡死?网站崩溃?当Linux系统弹出‘Nospaceleft’的红色警报,别慌!本文手把手教你从‘删库到跑路’进阶为‘磁盘清理大师’,5个关键步骤+30条救命命令,快速释放磁盘空间,拯救你...

取消回复欢迎 发表评论: