Linux 系统 Service 服务配置详解
Service 服务 服务单元前言在 Linux 生态系统中Systemd 被部署到大多数标准 Linux 发行版中作为默认初始化系统和服务管理器.service 文件是 Systemd 的单元配置文件用于定义服务的启动、停止、依赖关系等行为通过编写 .service 文件可以将自定义服务集成到系统服务管理中。而systemctl 是一个 Systemd 工具主要负责控制 Systemd 系统和服务管理器。检查 Systemd 是否安装检查系统中是否安装有 Systemd 并确定安装版本。打印如下表明当前系统已安装 Systemd。systemd219PAM AUDIT SELINUX IMA-APPARMORSMACK SYSVINIT UTMP LIBCRYPTSETUP GCRYPT GNUTLS ACL XZ LZ4-SECCOMPBLKID ELFUTILS KMOD IDNSystemd 的 Unit 文件Systemd 可以管理所有系统资源不同的资源统称为 Unit单位。在 Systemd 生态圈中Unit 文件统一了过去各种不同系统资源配置格式如服务的启动/停止、定时任务、设备自动挂载、网络配置、虚拟内存等而 Systemd 通过不同的文件后缀来区分这些配置文件。Systemd 支持的 12 种 Unit 文件类型automount用于控制自动挂载文件系统相当于 SysV-init 的 autofs 服务。device对于 /dev 目录下的设备主要用于定义设备之间的依赖关系。mount定义系统结构层次中的一个挂载点可以替代过去的 /etc/fstab 配置文件。path用于监控指定目录或文件的变化并触发其它 Unit 运行。scope这种 Unit 文件不是用户创建的而是 Systemd 运行时产生的描述一些系统服务的分组信息。service封装守护进程的启动、停止、重启和重载操作是最常见的一种 Unit 文件。slice用于表示一个 CGroup 的树通常用户不会自己创建这样的 Unit 文件。snapshot用于表示一个由 systemctl snapshot 命令创建的 Systemd Units 运行状态快照。socket监控来自于系统或网络的数据消息用于实现基于数据自动触发服务启动。swap定义一个用户做虚拟内存的交换分区。target用于对 Unit 文件进行逻辑分组引导其它 Unit 的执行。它替代了 SysV-init 运行级别的作用并提供更灵活的基于特定设备事件的启动方式。timer用于配置在特定时间触发的任务替代了 Crontab 的功能。Systemd 目录按照 Systemd 约定Unit 文件应该放置在指定的三个系统目录之一中优先级由上往下因此在三个目录中有同名文件时只有优先级最高的目录里的文件会被使用。/etc/systemd/system系统或用户自定义的配置文件。/run/systemd/system软件运行时生成的配置文件。/usr/lib/systemd/system系统或第三方软件安装时添加的配置文件。systemd 默认从目录 /etc/systemd/system/ 中读取配置文件但是大部分文件都是符号链接指向实际配置文件存放目录 /usr/lib/systemd/system/。Unit 和 TargetUnit 是 Systemd 管理系统资源的基本单元可以认为每个系统资源就是一个 Unit并使用一个 Unit 文件定义在 Unit 文件中需要包含相应服务的描述、属性以及需要运行的命令。Target 是 Systemd 中用于指定系统资源启动组的方式简单理解就是Target 是一个 Unit 组包含许多相关的 Unit启动某个 Target 的时候Systemd 就会启动里面所有的 Unit 类似于一个状态点启动某个 Target 就好比启动到某种状态。“”Systemd Service UnitUnit 文件结构以 sshd.service 为例文件结构如下# /usr/lib/systemd/system/sshd.service[Unit]DescriptionOpenSSH server daemonDocumentationman:sshd(8)man:sshd_config(5)Afternetwork.target sshd-keygen.serviceWantssshd-keygen.service[Service]TypenotifyEnvironmentFile/etc/sysconfig/sshdExecStart/usr/sbin/sshd-D$OPTIONSExecReload/bin/kill-HUP$MAINPIDKillModeprocessRestarton-failureRestartSec42s[Install]WantedBymulti-user.target示例二[Unit]DescriptionNingxia ApplicationAfternetwork.target mysql.service# 按需添加依赖服务[Service]Typeforking# 如果应用是后台进程使用 forkingUserrootWorkingDirectory/opt/project/ningxiaExecStart/bin/bash /opt/project/ningxia/run.sh restartRestartalways# 崩溃后自动重启RestartSec5s[Install]WantedBymulti-user.target如上所示Systemd 服务的 Unit 文件可以分为三个配置片段Unit 和 Install 所有 Unit 文件通用用于配置服务的描述、依赖和启动方式。Service 服务类型的 Unit 文件后缀为 .service特有的用于设置服务的管理和操作方法。[Unit]用来配置服务的描述信息、依赖关系和随系统启动的方式。Description服务的描述信息可以是任意字符串。Documentation指定服务的文档可以是一个或多个 URL 地址。After在指定依赖之后运行多项以空格分隔。仅影响启动顺序Before在指定依赖之前运行多项以空格分隔。仅影响启动顺序Wants设置 弱依赖 关系即所依赖服务启动失败或停止不会影响当前服务。Requires设置 强依赖 关系即所依赖服务启动失败或停止当前服务也必须退出。…依赖支持如下依赖条件描述network.target表示网络就绪network-online.target表示网络完全就绪(需要 NetworkManager-wait-online.service 支持)syslog.target表示系统日志服务就绪例postgresql.service 表示 postgresql 服务就绪[Service]定义服务的运行参数注意如下定义执行命令项均需使用绝对路径。Type指定服务启动类型支持类型如下类型描述simple默认值主进程由 ExecStart 启动后不后台化适用于前台程序。forking服务启动会派生到后台需配合 PIDFile 指定 PID 文件。onshot进程退出后服务视为完成适合执行一次性任务如初始化脚本。dbus服务通过 D-Bus 激活如桌面应用通信。notify服务通过 sd_notify 发送 READY1 信号告知启动完成需程序支持。idle若有其他任务执行完毕当前服务才会运行。User服务运行的用户应避免使用 root 建议创建专用用户。Group服务运行的用户组。PIDFile服务 PID 文件可不填如果填了服务需要生成 PID 文件否则不能启动。ExecStart服务启动命令。ExecStop服务停止命令。WorkingDirectory服务启动时的工作目录。Environment为服务指定环境变量。EnvironmentFile服务环境参数文件。Restart服务退出后的重启策略支持策略如下|策略 |描述||----|----||no |不重启默认值。||always |无论退出状态码如何都重启。||on-failure |推荐 仅在非正常退出状态码非 0时重启。||on-abnormal |仅在因信号终止或超时情况下重启。||on-abort |仅在未正常终止如SIGABRT时重启。||on-watchfdog |仅在看门狗超时情况下重启需配置 RuntimeWatchdogSec。|TimeoutStartSec启动服务时等待的秒数。TimeoutStopSec停止服务时等待的秒数。RestartSec服务退出后重启前的等待时间避免设置较短频繁重启导致系统负载过高。ExecReload服务重启的命令。ExecStartPre服务启动之前执行的命令。ExecStartPost服务启动之后执行的命令。ExecStopPost服务停止之后执行的命令。PrivateTmp是否给服务分配独立的临时空间。[Install]配置特定目标的 .target 文件用来使得服务在系统启动时自动运行。WantedBy定义依赖当前服务的模块在哪些目标target下会被激活当 Unit 激活时符号链接会放入 /etc/systemd/system/Target名.wants/ 目录中支持目标参数如下目标描述multi-user.target多用户命令行模式CentOS 7 默认运行级别 3。graphical.target图形界面模式运行级别 5。default.target系统默认目标通常是 multi-user.target 或 graphical.target。也可通过如下命令查看当前正在使用的运行目标。systemctl list-units--typetargetUNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Local Encrypted Volumes getty.target loaded active active Login Prompts local-fs-pre.target loaded active active Local File Systems(Pre)local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network-online.target loaded active active Network is Online network.target loaded active active Network nfs-client.target loaded active active NFS client services paths.target loaded active active Paths remote-fs-pre.target loaded active active Remote File Systems(Pre)remote-fs.target loaded active active Remote File Systems rpc_pipefs.target loaded active active rpc_pipefs.target rpcbind.target loaded active active RPC Port Mapper slices.target loaded active active Slices sockets.target loaded active active Sockets swap.target loaded active active Swap sysinit.target loaded active active System Initialization timers.target loaded active active Timers LOADReflects whether the unit definition was properly loaded. ACTIVEThe high-level unit activation state, i.e. generalization of SUB. SUBThe low-level unit activation state, values depend on unit type.RequireBy定义依赖当前服务的模块在哪些目标target下会被激活当 Unit 激活时符号链接会放入 /etc/systemd/system/Target名.required/ 目录中。AlsoAlias当前 Unit 可用于启动的别名。创建服务使用 vim 编辑器打开并创建 myApp.service。vim/lib/systemd/system/myApp.service常用命令命令说明systemctl start启动服务systemctl stop停止服务systemctl restart重启服务systemctl status查看服务状态systemctl reload重载服务systemctl enable启用开机自启动systemctl disable禁用开机自启动journalctl -u查看服务日志journalctl 详解‌journalctl 是 Linux 系统中查看和管理日志的核心工具‌专门用来查询 systemd 日志系统收集的各种系统记录它能查啥日志‌- 所有系统日志‌内核消息、服务运行状态、用户程序输出都能查。‌- 集中化管理‌不用在多个日志文件里翻找一条命令就能看遍关键信息。‌‌‌常用命令命令说明journalctl查看所有日志从最早开始journalctl -b查看本次启动以来的所有日志journalctl -u service查看指定服务的日志如journalctl -u nginxjournalctl -f实时跟踪最新日志类似tail -fjournalctl -k查看内核日志dmesgjournalctl -p err按优先级过滤如err、warning、infojournalctl --since 2025-01-01 12:00:00查看指定时间之后的日志journalctl --until 2025-01-01 13:00:00查看指定时间之前的日志journalctl -u service --since 1 hour ago查看过去1小时内某服务日志journalctl -n 50显示最近的50行日志journalctl -o json-pretty以 JSON 格式输出日志journalctl --disk-usage查看日志占用磁盘空间journalctl --vacuum-size200M缩减日志占用空间至 200Mjournalctl --vacuum-time2weeks删除两周前的日志以释放空间还能用journalctl --disk-usage查看日志占用空间用–vacuum-time或–vacuum-size清理旧日志释放磁盘journalctl -xe 详解journalctl -xe 是 Linux 系统特别是使用 systemd 的发行版如 CentOS 7/8、RHEL、Ubuntu 等中用于‌排查系统故障和服务启动失败‌最常用的命令组合。它的核心作用是‌查看最新的系统日志并自动提供针对错误信息的详细解释和解决建议。‌以下是该命令两个参数的具体含义及作用详解参数拆解‌-x (catalog / 解释目录)‌‌作用‌增强日志的可读性。它会在标准的日志消息下方附加来自“消息目录”message catalog的解释性文本。‌价值‌如果日志中包含已知的错误代码或 systemd 单元状态变更-x 会显示该错误的含义、可能的原因以及官方提供的解决链接Support URL。这能帮助管理员快速理解报错背景而不仅仅是看到一堆代码。‌-e (pager-end / 跳至末尾)‌‌作用‌在使用分页器如 less查看日志时直接跳转到日志的‌最末尾‌即最新的部分。‌价值‌系统日志通常非常庞大。如果不加 -e你需要手动翻页很久才能看到最近发生的错误。加上 -e 后你可以立即看到刚刚发生的事件非常适合排查“刚才操作导致的问题”。典型使用场景当你执行某个服务重启或系统操作失败时系统通常会提示Seesystemctl status service.serviceandjournalctl -xefordetails.此时运行 journalctl -xe 可以‌聚焦最新错误‌直接定位到导致失败的那几条最新日志。‌获取上下文‌不仅看到报错行还能看到报错前后的依赖关系、启动流程日志。‌获得指引‌通过 -x 提供的额外信息了解是否是配置错误、权限问题或依赖服务未启动journalctl -xe 是系统管理员的“急救包”‌。当你遇到服务起不来、网络中断或系统报错时它是第一步应该执行的命令能帮你快速从海量日志中锁定最新的错误现场并获取官方解释

相关新闻

南京净化车间性价比高的机构

南京净化车间性价比高的机构

引言 在南京,对于众多需要净化车间的企业来说,找到一家性价比高的机构至关重要。这不仅关系到成本控制,更影响着生产环境的质量和企业的长远发展。江苏智之海科技有限公司在众多净化车间机构中脱颖而出,展现出较高的性价比优势。…

2026/7/5 2:46:32阅读更多 →
深入理解JVM垃圾回收机制:从算法原理到GC调优实战

深入理解JVM垃圾回收机制:从算法原理到GC调优实战

导语 在Java技术体系中,自动内存管理(Automatic Memory Management)是其最核心的特性之一,也是Java开发者从C/C++的“内存泥潭”中解放出来的关键。然而,这份“自动”并非免费的午餐。当系统出现偶发的卡顿、长时间的停顿(STW, Stop-The-World)或令人头疼的OutOfMemoryE…

2026/7/5 2:46:32阅读更多 →
《逃离玫瑰岛》木苏里|小说|txt下载|笔趣阁|免费阅读

《逃离玫瑰岛》木苏里|小说|txt下载|笔趣阁|免费阅读

《逃离玫瑰岛》木苏里|小说|txt下载|笔趣阁|免费阅读资料可下载《逃离玫瑰岛》木苏里 全文https://pan.baidu.com/s/14aJ596-OUsShidA_Robpyw?pwd6yr4 English Practice Set 66 个人练习草稿,随便记几道题。Part 1 Vocabulary Choose the best word.The island l…

2026/7/5 2:46:32阅读更多 →
【电脑自动化工具】 OpenClaw 搭建指南 全程可视化无需代码操作(含安装包)

【电脑自动化工具】 OpenClaw 搭建指南 全程可视化无需代码操作(含安装包)

OpenClaw 2.7.9 本地 AI 智能体部署教程🦞|零基础快速搭建电脑自动化工具 一、软件信息与下载资源📦 适配平台:Windows 10/11 64 位、macOS 12 及以上 当前稳定版本:OpenClaw 2.7.9 安装包体积:45.8MB W…

2026/7/5 4:01:36阅读更多 →
OpenClaw机械臂控制框架实战配置指南

OpenClaw机械臂控制框架实战配置指南

1. 项目概述:这不是一个“装完就能用”的工具,而是一套需要亲手调校的机械臂控制中枢OpenClaw 这个名字听起来像开源版的机械爪操作系统,但实际接触过的人很快会发现——它根本不是开箱即用的APP,而是一套面向嵌入式开发者、高校机…

2026/7/5 4:01:36阅读更多 →
五款热门红茶礼盒客观测评推荐:老茶客精选,送礼倍有面儿

五款热门红茶礼盒客观测评推荐:老茶客精选,送礼倍有面儿

本次测评依托中国茶叶流通协会、浙大农业品牌研究中心 2025-2026 年行业公开数据,结合实地冲泡品鉴,选取国内五个代表性红茶品牌,从品牌背景、原料工艺、礼盒适配场景、品饮表现多维度客观分析,适合有送礼、日常品饮需求的茶友参考…

2026/7/5 4:01:36阅读更多 →
客户进厂考察,3 个细节决定是否下单

客户进厂考察,3 个细节决定是否下单

一、客户困境:第一次进厂,信息越多,反而越谨慎前几天,模具丫姐接待了一位来厂参观的汽配客户。在此之前,我们已经多轮沟通图纸、敲定方案、确认试模计划,前期对接十分顺畅。可当客户真正走进生产车间,反而变…

2026/7/5 4:01:36阅读更多 →
Win11Debloat终极指南:3分钟让Windows系统性能提升50%的完整教程

Win11Debloat终极指南:3分钟让Windows系统性能提升50%的完整教程

Win11Debloat终极指南:3分钟让Windows系统性能提升50%的完整教程 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declut…

2026/7/5 4:01:36阅读更多 →
洞悉生态-社会耦合机制、多源数据融合进阶应用:基于当量因子法InVEST、SolVES模型等多技术融合在生态系统服务功能社会价值评估种的应用

洞悉生态-社会耦合机制、多源数据融合进阶应用:基于当量因子法InVEST、SolVES模型等多技术融合在生态系统服务功能社会价值评估种的应用

在生态文明建设的浪潮中,你是否正为如何量化那些难以用货币衡量的“人心账”而头疼?传统的生态评估往往只算清了“经济账”,却忽略了公众对美学、休闲和精神寄托的感知。作为破解这一难题的核心利器,当量因子法、InVEST与SolVES的…

2026/7/5 3:56:36阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →