当前位置: 首页 > 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…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...