掌握 systemd:Linux 服务管理的核心工具
1. 什么是 systemd?
- 定义:systemd 是 Linux 系统的初始化系统(init system)和服务管理器,用于替代传统的
SysVinit。 - 核心目标:
- 加速系统启动(并行化任务)。
- 统一管理服务、日志、挂载点等。
- 提供依赖关系解决和资源控制。
2. 核心功能与用途
2.1 服务生命周期管理
- 常用命令:
systemctl start nginx.service # 启动服务 systemctl stop nginx.service # 停止服务 systemctl restart nginx.service # 重启服务 systemctl reload nginx.service # 重载配置(不中断服务) systemctl status nginx.service # 查看状态(是否运行、日志片段) - 关键场景:部署 Web 服务器、数据库等后台服务时,快速启停和状态监控。
2.2 开机自启管理
- 命令:
systemctl enable nginx.service # 启用开机自启 systemctl disable nginx.service # 禁用开机自启 systemctl is-enabled nginx # 检查是否已启用 - 原理:通过创建符号链接到
/etc/systemd/system下的目标层级(如multi-user.target.wants)。
2.3 依赖管理与并行启动
- 优势:
- 自动解决服务依赖(如“服务 A 必须在服务 B 之后启动”)。
- 并行启动独立服务,显著缩短系统启动时间。
- 查看依赖:
systemctl list-dependencies nginx.service # 显示服务的依赖树
2.4 故障恢复与日志
- 自动重启崩溃服务(需在服务文件中配置):
# 在 .service 文件中添加 Restart=on-failure # 仅在异常退出时重启 RestartSec=5s # 等待 5 秒后重启 - 日志查看:
journalctl -u nginx.service # 查看 Nginx 日志 journalctl -u nginx --since "10分钟前" # 时间范围过滤 journalctl -p err -u nginx # 仅显示错误级别日志
2.5 资源隔离与控制
- 限制服务资源(示例配置):
# 在 .service 文件中添加 MemoryMax=512M # 限制内存最大 512MB CPUQuota=50% # 限制 CPU 占用不超过 50% - 沙盒化运行(增强安全性):
ProtectSystem=strict # 禁止修改系统文件 PrivateTmp=true # 服务使用独立临时目录
3. 服务管理实战
3.1 自定义服务文件
- 示例:编写一个 Python 脚本服务
创建/etc/systemd/system/myapp.service:[Unit] Description=My Python App After=network.target # 确保网络就绪后启动[Service] ExecStart=/usr/bin/python3 /opt/myapp/main.py WorkingDirectory=/opt/myapp Restart=always # 任何原因退出都重启 User=www-data # 指定运行用户[Install] WantedBy=multi-user.target # 关联到标准多用户环境 - 生效步骤:
sudo systemctl daemon-reload # 重载配置 sudo systemctl start myapp # 启动服务
3.2 定时任务(替代 cron)
- 使用
systemd.timer
创建/etc/systemd/system/backup.timer:[Unit] Description=Daily Backup Timer[Timer] OnCalendar=*-*-* 02:00:00 # 每天凌晨 2 点 Persistent=true # 错过时间后补执行[Install] WantedBy=timers.target - 关联服务文件:创建同名
.service文件(如backup.service)定义具体任务。
4. 高级功能
4.1 分析系统启动性能
- 查看启动耗时:
systemd-analyze # 总启动时间 systemd-analyze blame # 各服务耗时排序 systemd-analyze critical-chain nginx # 服务的依赖链耗时
4.2 临时文件管理
- 替代
tmpfiles.d,自动创建、清理临时目录:systemd-tmpfiles --create # 立即应用配置
4.3 Socket 激活
- 按需启动服务(如 SSH 仅在首次连接时启动):
# sshd.socket 文件 [Socket] ListenStream=22
5. 最佳实践
- 避免直接修改
/usr/lib/systemd/
自定义服务文件应放在/etc/systemd/system/。 - 日志轮转
配置journald.conf限制日志大小,防止磁盘占满。 - 谨慎使用
Restart=always
可能导致崩溃服务无限重启,消耗资源。
6. 常见问题排查
- 服务启动失败:
systemctl status <服务名> # 查看状态和错误提示 journalctl -xe # 查看最近日志详情 - 依赖冲突:
使用systemctl list-dependencies分析依赖关系。
总结
systemd 不仅是服务管理器,更是现代 Linux 系统的“管家”,涵盖日志、挂载、定时任务等核心功能。掌握其用法可大幅提升运维效率,尤其在服务部署、资源监控和故障排查场景中。
附录:常用命令速查表
| 命令 | 说明 |
|---|---|
systemctl list-unit-files --type=service | 列出所有可用服务 |
systemctl mask nginx | 禁止服务被手动或依赖启动 |
systemctl kill -s SIGTERM nginx | 强制终止服务进程 |
hostnamectl set-hostname myserver | 修改主机名(systemd 工具链) |
相关文章:
掌握 systemd:Linux 服务管理的核心工具
1. 什么是 systemd? 定义:systemd 是 Linux 系统的初始化系统(init system)和服务管理器,用于替代传统的 SysVinit。核心目标: 加速系统启动(并行化任务)。统一管理服务、日志、挂载…...
【信息系统项目管理师-案例真题】2019下半年案例分析答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一【问题 1】(6 分)【问题 2 】(8 分)【问题 3 】(11 分)试题二【问题 1】(5分)【问题 2】 (14 分)【问题 3 】(6 分)试题三【问题 1】(8 分)【问题 2 】(6 分)【问题 3】 (8 分)【问题 4 …...
C/C++程序的内存是如何开辟的?
💬 欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习! 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对C语言感兴…...
日志结构化处理:PO对象toString日志转JSON工具
日志结构化处理:PO对象toString日志转JSON工具 1. 解决的问题2. 下载地址 在Java项目中,PO(Plain Old Java Object)对象遍布各个角落,且常常伴随着大量的日志记录需求。传统的做法是通过toString方法直接打印这些对象&…...
python学opencv|读取图像(六十五)使用cv2.boundingRect()函数实现图像轮廓矩形标注
【1】引言 前序学习进程中,已经使用cv2.findContours()函数cv2.drawContours()函数实现图像轮廓识别和标注,这种标注沿着图像的轮廓进行,比较细致。相关文章链接为: python学opencv|读取图像(六十四)使用…...
大疆无人机需要的kml文件如何制作kml导出(大疆KML文件)
大疆无人机需要的轨迹kml文件,是一种专门的格式,这个kml里面只有轨迹点,其它的属性信息都不需要。 BigemapPro提供了专门的大疆格式输出, 软件这里下载 www.bigemap.com 安装后,kml导入如下图: 然后选择…...
ArrayList、LinkedList、HashMap、HashTable、HashSet、TreeSet
集合族谱 在这些集合中,仅有vector和hashtable是线程安全的,其内部方法基本都有synchronized修饰。 ArrayList 底层采用Object数组实现,实现了RandomAccess接口因此支持随机访问。插入删除操作效率慢。 ArrayList需要一份连续的内存空间。 A…...
手动配置IP
手动配置IP,需要考虑四个配置项: 四个配置项 IP地址、子网掩码、默认网关、DNS服务器 IP地址:格式表现为点分十进制,如192.168.254.1 子网掩码:用于区分网络位和主机位 【子网掩码的二进制表达式一定是连续的&#…...
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡 问题 idea编译器 安装copilot AI工具 实际操作 在 IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤如下: 打开 IntelliJ IDEA: 打开你的 IntelliJ IDEA 应用…...
游戏引擎学习第101天
回顾当前情况 昨天的进度基本上完成了所有内容,但我们还没有进行调试。虽然我们在运行时做的事情大致上是对的,但还是存在一些可能或者确定的bug。正如昨天最后提到的,既然现在时间晚了,就不太适合开始调试,所以今天我…...
css块级元素和行内元素区别
在CSS中,元素可以分为两大类:块级元素(Block-level elements)和行内元素(Inline elements)。这两种元素在网页布局中起着不同的作用,主要体现在它们的显示方式、尺寸控制、以及与其他元素的交互…...
JAVA安全—Shiro反序列化DNS利用链CC利用链AES动态调试
前言 讲了FastJson反序列化的原理和利用链,今天讲一下Shiro的反序列化利用,这个也是目前比较热门的。 原生态反序列化 我们先来复习一下原生态的反序列化,之前也是讲过的,打开我们写过的serialization_demo。代码也很简单&…...
什么是信息熵
信息熵 公式 一个离散随机变量 X X X的可能取值为 X x 1 , x 2 , . . . , x n Xx_1,x_2,...,x_n Xx1,x2,...,xn,而对应的概率为 p i p ( X x i ) p_ip(Xx_i) pip(Xxi),如下 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4… x n x_n xnp( x …...
使用API有效率地管理Dynadot域名,清除某一文件夹中域名的默认DNS设置
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...
2.11 sqlite3数据库【数据库的相关操作指令、函数】
练习: 将 epoll 服务器 客户端拿来用 客户端:写一个界面,里面有注册登录 服务器:处理注册和登录逻辑,注册的话将注册的账号密码写入数据库,登录的话查询数据库中是否存在账号,并验证密码是否正确…...
当 LSTM 遇上 ARIMA!!
大家好,我是小青 ARIMA 和 LSTM 是两种常用于时间序列预测的模型,各有优劣。 ARIMA 擅长捕捉线性关系,而 LSTM 擅长处理非线性和长时间依赖的关系。将ARIMA 和 LSTM 融合,可以充分发挥它们各自的优势,构建更强大的时…...
kali连接xshell
1.先保证宿主机:以太网适配器 VMware Network Adapter VMnet8 和kali(net 模式)在同一个网段 windows VMnet8开启 查看是否是自动获取ip ipv4 和ipv6一样的 查看 windows VMnet8的IPv4的地址 查看 kali 的IP地址 window ping的结果…...
图像曲率滤波
看到这么一个非常有意思的东西,记录一下 https://www.zhihu.com/question/35499791 https://zhuanlan.zhihu.com/p/22971865 GCFilter_talk.pdf_免费高速下载|百度网盘-分享无限制 https://github.com/YuanhaoGong/CurvatureFilter?tabreadme-ov-file...
TCP 和 UDP 可以绑定相同的端口吗?
前言 当一个网络接口接收到一个数据报时,IP 模块首先检查目的地址是否为自己的 IP 地址,如果是的话,数据报交付给由 IPv4 头部的协议字段指定的协议模块。 TCP 和 UDP 在内核中是两个完全独立的模块,送给 TCP/UDP 模块的报文根据…...
【Python网络爬虫】爬取网站图片实战
【Python网络爬虫】爬取网站图片实战 Scrapying Images on Website in Action By Jackson@ML *声明:本文简要介绍如何利用Python爬取网站数据图片,仅供学习交流。如涉及敏感图片或者违禁事项,请注意规避;笔者不承担相关责任。 1. 创建Python项目 1) 获取和安装最新版…...
从玩具车到智能体:用STC89C52给小车装上‘眼睛’和‘触角’的传感器融合实战
从玩具车到智能体:STC89C52多传感器融合的决策系统设计 当一辆普通的玩具车被赋予环境感知能力,它便开始了向智能体的进化。在这个项目中,我们使用STC89C52单片机作为"大脑",通过超声波模块和漫反射光电传感器构建了一…...
Docker Hub命令行工具hub-tool:镜像仓库自动化管理的终极利器
1. 项目概述:一个被低估的Docker Hub命令行利器 如果你日常工作中需要和Docker Hub打交道,无论是管理个人镜像、处理团队仓库,还是需要自动化镜像的推送、拉取和清理,那么你很可能已经受够了在浏览器和命令行之间反复横跳的繁琐。…...
隐私优先的API密钥泄露检测工具:compromising-position设计与实战
1. 项目概述:一个帮你确认API密钥是否已泄露的隐私优先工具最近在开发者圈子里,一个叫OpenClaw的技能市场平台因为安全漏洞闹得沸沸扬扬,据说有几万个API密钥被泄露了。安全公告总是千篇一律地告诉你“请立即轮换你的密钥”,但说实…...
Apache SeaTunnel 4 月有何新动作?连接器增强与 Zeta 稳定性提升等亮点速览
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
ComfyUI图像修复终极指南:5个高效技巧解决安装与使用难题
ComfyUI图像修复终极指南:5个高效技巧解决安装与使用难题 【免费下载链接】comfyui-inpaint-nodes Nodes for better inpainting with ComfyUI: Fooocus inpaint model for SDXL, LaMa, MAT, and various other tools for pre-filling inpaint & outpaint areas…...
告别Surface“幽灵触控”:从现象溯源到一劳永逸的修复指南
1. 什么是Surface"幽灵触控"? 如果你正在使用Surface设备,突然发现屏幕某个区域莫名其妙地自动点击,或者部分触控功能完全失灵,恭喜你遇到了传说中的"幽灵触控"问题。这个现象最早在Surface Pro 4上被大量报告…...
OpenClaw从入门到应用——工具(Tools):创建技能
通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》 简介 OpenClaw 被设计为易于扩展。“技能”是向你的助手添加新能力的主要方式。 什么是技能? 一个技能是一个目录,其中包含一个 SKILL.md…...
3分钟掌握清华PPT模板:免费打造专业学术演示文稿的终极方案
3分钟掌握清华PPT模板:免费打造专业学术演示文稿的终极方案 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报、毕业答辩或重要演讲的PPT设计而头疼吗?清华大学视觉设计…...
如果写好AI提示词:这份 Prompt 调试速查表帮你事半功倍
有句话说得好:"好的工程师和差的工程师的区别,不在于他们多聪明,而在于他们有没有一份好的排障清单。"这句话对 Prompt 工程也完全适用。最近三个月,我在 Claude 社区的 Discord 里帮人调试 Prompt。最常见的情况是什么…...
从概念验证到生产环境:Keep开源告警管理平台的5步完整实战部署指南
从概念验证到生产环境:Keep开源告警管理平台的5步完整实战部署指南 【免费下载链接】keep The open-source AIOps and alert management platform 项目地址: https://gitcode.com/GitHub_Trending/kee/keep 在当今复杂的云原生环境中,告警管理已成…...
