当前位置: 首页 > news >正文

Systemd 和 Systemctl命令详解

Systemd 和 Systemctl命令详解

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

本节将详细介绍 systemctl 的常用命令、服务文件配置以及在项目中的实际应用。
在这里插入图片描述


一、系统管理的核心工具:systemctl 与服务单元(Unit)

systemctlsystemd 的命令行接口,通过它可以管理各类单元(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

应用场景:当服务运行出现异常时,statusjournalctl 是获取服务状态和日志的首选工具,有助于快速排查故障。

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 系列命令详解

systemddaemon 系列命令提供了对 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 服务器,要求其在系统启动时自动运行,并在故障时自动重启:

  1. 启用服务:设置 Nginx 服务为开机自启动。

    sudo systemctl enable nginx.service
    
  2. 配置重启策略:通过编辑服务文件,设置 Restart=on-failure,确保在出现异常时自动重启。

  3. 检查服务状态:启动并监控服务运行情况,确保其正常工作:

    sudo systemctl start nginx.service
    sudo systemctl status nginx.service
    

示例2:创建并启用自定义服务

在项目中创建一个自定义服务,如将应用程序 myapp 设为服务单元,确保其在网络就绪后启动:

  1. 创建服务文件:在 /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
    
  2. 启用并启动服务

    sudo systemctl enable myapp.service
    sudo systemctl start myapp.service
    
  3. 重载配置:若修改服务配置,则通过 daemon-reload 使更改生效:

    sudo systemctl daemon-reload
    

示例3:临时屏蔽和解除屏蔽服务

在开发环境中,可以使用 maskunmask 命令来临时禁用不必要的服务,从而节省资源并简化系统管理。

# 屏蔽 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 的核心命令行工具&#xf…...

基于Multisim的音频放大电路设计与仿真

基本设计要求:设计并仿真实现一个音频功率放大器。功率放大器的电源电压为+5V(电路其他部分的电源电压不限),负载为8Ω电阻。具体要求如下:1)3dB通频带为300~3400Hz,输出…...

这是一款专门为SQL新手小白量身定制的工具!

首先!它永久免费!SQLynx对于个人用户和教育从业者永久免费!且真正实现了跨平台操作!支持Windows Linux和Mac,无需任 何安装和配置,更支持国产操作系统,如银河 麒麟统信等。 功能直观&#xff01…...

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…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...