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…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...