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

记第一次本地编译seatunnel源码

拉取代码 git clone https://github.com/apache/seatunnel.git 使用版本 我们生产环境用的是2.3.5版本,所以基于2.3.5-release分支代码进行编译。 maven package过程 遇到的第一个问题:‘com.sun.tools.javac.tree.JCTree com.sun.tools.javac.tree…...

《云主机配置全攻略》

《云主机配置全攻略》 一、云主机配置的重要性二、配置云主机的关键要素(一)CPU 的选择(二)内存的考量(三)硬盘的抉择(四)带宽的确定(五)机房线路的考虑&…...

RHCE nginx架构和安装

nginx架构和安装 nginx架构和安装1.1 nginx架构1.2 安装nginx1.1.1 本地安装1.1.2 官网安装1.1.3 源码安装 1.3 控制服务1.4 页面自定义 nginx架构和安装 nginx是多进程组织模式,而且是一个由 Master 主进程和 Worker 工作进程组成 1.1 nginx架构 1.2 安装nginx …...

Jmeter自动化实战

一、前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 二、创建录制模板 可参考:jmeter录制接口 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制…...

构建高效的Java SOCKS5代理:从零开始的网络转发实现

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

spring-boot(绑定配置文件及应用)

配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好; YAML&#x…...

Mac OS 搭建MySQL开发环境

Mac OS 搭建MySQL开发环境 文章目录 Mac OS 搭建MySQL开发环境一、安装Mysql:二、配置环境变量三、安装Navicat 本地环境: Mac OS Sequoia15.0.1(M3 Max) 目标状态: 下载安装Mysql,配置相关环境。 一、安装Mysql&…...

windows下安装python库wordCloud报错

换电脑安装wordcloud半天安装失败,记录一下遇到的坑,也给大家节省点时间。 方法1: 错误呢就是下面这个,说没c编译器,要不就去他给的地址上安装一下,我安装了一下好像没什么用,也没太敢勾选&am…...

Spring IOC 自动装配(注入)

注解⽅式注⼊ Bean 对于 bean 的注⼊,除了使⽤ xml 配置以外,可以使⽤注解配置。注解的配置,可以简化配置⽂件, 提⾼开发的速度,使程序看上去更简洁。对于注解的解释,Spring对于注解有专⻔的解释器&#…...

Go使用SIMD指令——以string转为整数为例

本文Go使用SIMD指令采用如下方式: C编写对应的程序clang编译成汇编c2goasm将上述生成的汇编转为go的汇编 准备工具 clang。直接使用apt-get install clang安装即可c2goasm。 go get -u github.com/minio/c2goasm来进行安装asm2plan9s。 go get -u github.com/min…...

企业网站风格/已矣seo排名点击软件

之前做SLIC分割的过程中在网上找到的代码都只能得到标注分割线的图但不能得到分割后的超像素块,所以写了一个能够保存分割后的超像素块的python程序。 进行SLIC分割部分: import skimage from skimage.segmentation import slic,mark_boundaries from …...

对网站排名没有太大影响的因素/百度客服怎么联系

以前的几篇文章简单的介绍了一下UI线程和子线程之间的线程通信利器Handler,以及顺便介绍了一下SyncTask和HeadlerThread。这里介绍另一线程通信利器EventBus。 EventBus是一个开源组件。https://github.com/greenrobot/EventBus,通过线程间事件订阅和分发…...

400全国服务热线容桂网站制作/电子商务seo名词解释

作为一个命令很工具,SC.exe可 以用来测试你自己的系统,你可以设置一个批处理文件来使用不同的参数调用 SC.exe来控制服务。这个很有用,如果你想看看你的服务不断的启动和停止,我没有试过哦!让一个服务一下子打开&#…...

专业番禺网站建设/哪个平台可以免费推广

在软件体系架构中分层结构是最常见的,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,自上至下分别是:表示层、业务逻辑层、数据持久层,这里所说的三层是按照功能将系统在开发过程中进行划分,但是这里少了很…...

网站开发完了备案/深圳市企业网站seo营销工具

灵动微MM32F0020搭载M0内核,工作频率可达48兆赫兹的32位MCU, 提供32KB Flash和2KB SRAM。MM32F0020系列单片机适用于各类汽车,工业和消费市场,其典型应用包括充电器、电池管理、散热风扇、烟感、玩具、电机以及8/16位MCU升级替换。 客户在使…...

wordpress资源下载/竞价推广怎么样

有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出两块 最重的 石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; 如果 x y&#xff0c;那么两块石头都会被完全…...