Systemd 和 Systemctl命令详解
Systemd 和 Systemctl命令详解
在现代 Linux 系统中,systemd 是一种高度灵活且广泛应用的系统管理工具。它主要负责系统引导和进程管理,支持并行化启动服务,并提供高级的服务管理和依赖控制。systemctl 是 systemd 的核心命令行工具,允许用户对系统的服务单元进行控制,包括启动、停止、检查状态以及配置自启动服务等操作。
本节将详细介绍 systemctl 的常用命令、服务文件配置以及在项目中的实际应用。

一、系统管理的核心工具:systemctl 与服务单元(Unit)
systemctl 是 systemd 的命令行接口,通过它可以管理各类单元(Unit)。每个服务、套接字、挂载点和设备都被称为一个单元,通过单元文件来定义其运行配置。常见的单元类型包括:
- 服务单元(service):负责管理后台服务进程,如
nginx.service。 - 套接字单元(socket):管理与进程间通信相关的套接字,如
sshd.socket。 - 安装点单元(mount):管理文件系统挂载点,如
/home。 - 目标单元(target):分组多个服务,类似于运行级别控制,如
multi-user.target。

二、systemctl 的常用命令分类
在日常管理和项目操作中,以下 systemctl 命令可以帮助进行服务管理、状态监控、系统控制等任务。

1. 启动与停止服务
| 命令 | 说明 | 示例 |
|---|---|---|
systemctl start UNIT | 启动指定服务或单元 | systemctl start nginx.service |
systemctl stop UNIT | 停止指定服务或单元 | systemctl stop nginx.service |
systemctl restart UNIT | 重启指定服务或单元 | systemctl restart nginx.service |
systemctl reload UNIT | 重新加载服务配置,而不中断运行 | systemctl reload nginx.service |
systemctl try-restart UNIT | 仅在服务已启动的情况下重启服务 | systemctl try-restart nginx.service |
应用场景:在对服务配置文件进行更改后,常用
reload命令应用新配置,而不影响服务的连续性。
2. 查询状态与日志
| 命令 | 说明 | 示例 |
|---|---|---|
systemctl status UNIT | 查看服务状态及其日志 | systemctl status apache2.service |
systemctl is-active UNIT | 检查服务是否正在运行 | systemctl is-active apache2.service |
systemctl is-failed UNIT | 检查服务是否启动失败 | systemctl is-failed apache2.service |
journalctl -u UNIT | 查看指定单元的详细日志 | journalctl -u apache2.service |
应用场景:当服务运行出现异常时,
status和journalctl是获取服务状态和日志的首选工具,有助于快速排查故障。
3. 配置开机自启动和屏蔽服务
| 命令 | 说明 | 示例 |
|---|---|---|
systemctl enable UNIT | 设置服务开机自启 | systemctl enable ssh.service |
systemctl disable UNIT | 取消服务的开机自启 | systemctl disable ssh.service |
systemctl mask UNIT | 屏蔽服务,防止其被启动 | systemctl mask telnet.service |
systemctl unmask UNIT | 解除对服务的屏蔽 | systemctl unmask telnet.service |
应用场景:在项目中,设置服务的启动和屏蔽状态可以确保系统启动顺利、资源合理分配,并防止不必要的服务占用系统资源。
三、系统管理命令:systemctl daemon 系列命令详解
systemd 的 daemon 系列命令提供了对 systemd 管理器自身的控制功能,包括重新加载配置和重新启动管理器。

1. systemctl daemon-reload——重新加载 systemd 配置
功能说明:
当用户更改、添加或删除了服务文件后,systemctl daemon-reload 会重新加载所有服务单元的配置,确保 systemd 读取最新的配置文件。使用该命令无需重启系统即可应用新的服务配置。
应用场景:
- 更改服务配置:如
nginx.service发生修改,可通过daemon-reload重新加载,使其配置生效。 - 新增或删除服务文件:添加自定义服务后,运行该命令更新
systemd配置,确保新服务可用。
示例命令:
sudo systemctl daemon-reload
注意:
daemon-reload不会影响已运行的服务,且通常不需要重启服务进程即可生效。
2. systemctl daemon-reexec——重启 systemd 进程
功能说明:
daemon-reexec 命令重新启动 systemd 管理器本身,用于在 systemd 程序更新后使新版本生效,或在 systemd 出现问题时尝试恢复正常工作状态。
应用场景:
systemd更新:在systemd升级后,用于重新启动管理器进程以应用新版本。- 解决异常状态:当
systemd异常退出或遇到严重错误时,通过daemon-reexec重启管理器恢复正常。
示例命令:
sudo systemctl daemon-reexec
注意:
daemon-reexec会短暂地停止systemd管理器,因此可能会影响到一些正在运行的服务,建议在系统空闲时进行操作。
四、实际应用示例:项目中systemctl的使用
在项目开发和管理中,灵活运用 systemctl 命令能够确保服务稳定性和系统资源的有效分配。以下是几个实际应用示例。
示例1:配置自启动Web服务
假设在项目中使用 Nginx 作为 Web 服务器,要求其在系统启动时自动运行,并在故障时自动重启:
-
启用服务:设置 Nginx 服务为开机自启动。
sudo systemctl enable nginx.service -
配置重启策略:通过编辑服务文件,设置
Restart=on-failure,确保在出现异常时自动重启。 -
检查服务状态:启动并监控服务运行情况,确保其正常工作:
sudo systemctl start nginx.service sudo systemctl status nginx.service
示例2:创建并启用自定义服务
在项目中创建一个自定义服务,如将应用程序 myapp 设为服务单元,确保其在网络就绪后启动:
-
创建服务文件:在
/etc/systemd/system/myapp.service文件中添加以下配置:[Unit] Description=My Custom Application After=network.target[Service] ExecStart=/usr/local/bin/myapp Restart=on-failure[Install] WantedBy=multi-user.target -
启用并启动服务:
sudo systemctl enable myapp.service sudo systemctl start myapp.service -
重载配置:若修改服务配置,则通过
daemon-reload使更改生效:sudo systemctl daemon-reload
示例3:临时屏蔽和解除屏蔽服务
在开发环境中,可以使用 mask 和 unmask 命令来临时禁用不必要的服务,从而节省资源并简化系统管理。
# 屏蔽 Telnet 服务,防止其启动
sudo systemctl mask telnet.service# 解除屏蔽
sudo systemctl unmask telnet.service
示例4:检查系统状态与管理器状态
系统管理员可以通过 systemctl is-system-running 命令了解系统的整体状态,判断系统是否运行在稳定状态;在对 systemd 管理器进行更新时,通过 daemon-reexec 重新启动管理器,以应用最新版本。
总结
systemctl 是 Linux 系统中不可或缺的服务和系统管理工具。它通过对服务单元(Unit)的精确控制,实现了对服务的启动、停止、重启、状态监控以及开机自启等功能。作为 systemd 的命令行接口,systemctl 赋予了系统管理员对服务和资源的全面控制能力,在提升系统启动速度、减少服务依赖冲突、提高系统资源的利用率等方面发挥了重要作用。无论是用于服务器的运维管理还是嵌入式项目的自动化控制,systemctl 都提供了可靠的解决方案。
通过本章内容的学习,读者应该能够熟练掌握 systemctl 的基本命令及其在不同场景中的实际应用,包括如何编写和配置服务单元文件、如何确保关键服务的开机自启、如何动态加载和修改服务配置等。这些技能为管理和优化 Linux 系统中的服务和资源奠定了扎实的基础。
相关文章:
Systemd 和 Systemctl命令详解
Systemd 和 Systemctl命令详解 在现代 Linux 系统中,systemd 是一种高度灵活且广泛应用的系统管理工具。它主要负责系统引导和进程管理,支持并行化启动服务,并提供高级的服务管理和依赖控制。systemctl 是 systemd 的核心命令行工具…...
基于Multisim的音频放大电路设计与仿真
基本设计要求:设计并仿真实现一个音频功率放大器。功率放大器的电源电压为+5V(电路其他部分的电源电压不限),负载为8Ω电阻。具体要求如下:1)3dB通频带为300~3400Hz,输出…...
这是一款专门为SQL新手小白量身定制的工具!
首先!它永久免费!SQLynx对于个人用户和教育从业者永久免费!且真正实现了跨平台操作!支持Windows Linux和Mac,无需任 何安装和配置,更支持国产操作系统,如银河 麒麟统信等。 功能直观!…...
springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38819)
刚解决Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38816)没几天,又来一个新的,真是哭笑不得啊。 springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38816)https://blog.csdn.ne…...
Android Input的流程和原理
Android Input事件机制 Android系统是由事件驱动的,而Input是最常见的事件之一,用户的点击、滑动、长按等操作,都属于Input事件驱动,其中的核心就是InputReader和InputDispatcher。InputReader和InputDispatcher是跑在system_serv…...
InfiMM-WebMath-40B——利用由 24 亿数学文档组成的数据集提高 LLM 的数学性能
1. 前言 论文地址:https://arxiv.org/abs/2409.12568 本文提出了一个新的大规模多模态预训练数据集 InfiMM-WebMath-40B,以提高数学推理能力。该数据集包含 24 亿个科学和数学相关的网络文档、85 亿个图片 URL 和约 400 亿个文本标记。该数据集支持多模…...
Swarm-LIO: Decentralized Swarm LiDAR-inertial Odometry论文翻译
文章目录 前言一、介绍二、相关工作三、方法A. 问题表述B. 框架概述C. 群体系统的初始化D. 去中心化激光雷达-惯性状态估计 四. 实验A. 室内飞行B. 退化环境飞行C. 去中心化部署 五. 结论和未来工作 前言 原文:原文 准确的自我状态和相对状态估计是完成群体任务的关…...
第十八章 Vue组件样式范围配置之scoped
目录 一、引言 二、案例演示 2.1. 工程结构图 2.2. 核心代码 2.2.1. main.js 2.2.2. App.vue 2.2.3. BaseOne.vue 2.2.4. BaseTwo.vue 2.3. 运行效果 2.4. 调整代码 2.4.1. BaseTwo.vue 2.4.2. 运行效果 三、scoped原理 一、引言 前面的几个章节在介绍组件的时…...
【JavaScript】JavaScript 进阶-3-编程思想构造函数原型(更新中)
目录 编程思想构造函数原型 编程思想 构造函数 原型...
头歌网络安全爬虫
#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2020/4/8 8:19 # File : info.py # ---------------------------------------------- # ☆ ☆ ☆ ☆ ☆ ☆ ☆ # >>> Author : Alex # >>> QQ : 2426671397 # >>> Mail…...
二、k8s快速入门之docker+Kubernetes平台搭建
centosmaster192.168.100.10centosnode1192.168.100.20centosnode2192.168.100.30 除特殊说明命令都需要在三台都执行 ⭐️ k8s 的指令: kubeadm:用来初始化集群的指令kubelet: 在集群中的每个节点上用来启动Pod和容器kubectl: 用来与集群通信的命令行…...
k8s的发展历史
Kubernetes(通常缩写为 K8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它的发展历史可以追溯到多个关键的里程碑: 1. 起源(2013 年) Kubernetes 的起源可以追溯到 Google 的内部项…...
Pytorch lightning多机多卡训练通讯问题(NCCL error)排查
一、问题 单机多卡可以正常训练模型,多机多卡数据加载完成后卡住不动,排查两台机器可以ping通,表明网络没有问题,查看bug信息是NCCL通信问题。报错信息大致如下: torch.distributed.DistBackendError: NCCL error in: …/torch/c…...
React如何实现Vue的keepAlive功能
前言 在React中,默认情况下组件在被卸载后会销毁状态,这与Vue的keep-alive功能不同。在Vue中,keep-alive组件可以缓存组件状态,在路由切换时重新挂载。实现这一功能在React中并不简单,但我们可以借助一个第三方库——…...
在 Ubuntu 22.04 LTS 上安装 NVM (Node Version Manager) 管理和切换不同版本的 Node.js npm
安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash# nvm --version 0.40.1安装 Node.js 的不同版本 列出所有可用的 Node.js 远程版本 nvm ls-remotenvm install v18.20.4# node --version v18.20.4# nvm current v18.20.4npm 是 …...
如何搭建题库管理小序❓
土著刷题小🍊序不仅能够作为组织考试的利器,它同样可以帮助教育培训机构构建一个强大且高效的题库管理系统。 下面跟随我们的指导,一起来看看如何利用土著刷题小🍊序轻松快捷地建立起自己的题库,并享受其所带来的诸多好…...
Spring Boot框架下校园社团信息管理的创新实践
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
vscode clangd for cuda 插件配置
这里写目录标题 1. 下载插件clangd,并且安装server到host2. 配置3. 安装调试插件 1. 下载插件clangd,并且安装server到host 步骤 extension下载 altshiftp, 下服务,如果下不下来请考虑用🪜 下载好后check一下,检查是否正常 正常的标志 注意…...
软件测试学习笔记丨SeleniumPO模式
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22525 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…...
研发效能DevOps: Vite 使用 Vue Router
目录 一、实验 1.环境 2.初始化前端项目 3.安装vue-router 4.Vite 使用 Vue Router 二、问题 1.运行出现空页面 2.Vue Router如何禁止页面回退 一、实验 1.环境 (1)主机 表1 主机 系统 软件版本备注Windows11VS Code1.94.2Node.jsv18.20.4(LT…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
