Linux学习(八)(服务管理(检查服务状态,开始/停止服务,检查服务日志,创建新服务))

服务管理

Linux 中的服务管理是指控制 Linux 在启动和关闭计算机的过程中启动和停止的服务(或“守护程序”)的系统。这些服务执行各种功能,并提供未附加到用户界面的进程。

Linux 系统,尤其是系统管理员,通常需要管理这些服务,例如启动或停止它们、在引导时启用或禁用它们等。Linux 中服务管理涉及的各种命令包括 、 、 和 、 等。systemctl startsystemctl stopsystemctl restartsystemctl reloadsystemctl statussystemctl enable/disable

在现代 Linux 发行版中,服务管理主要由 systemd 处理,但在较旧或简约的发行版中,它由 SystemV 或 Upstart 等较旧的系统处理。

下面是一个使用 systemctl 启动和检查服务(例如 sshd service)状态的基本示例:

# Start sshd service
sudo systemctl start sshd# Check status of sshd service
sudo systemctl status sshd

管理服务是 Linux 系统管理中的一项关键技能,对于维护系统安全稳定至关重要。

🖥️ Linux服务管理就像管理店铺员工

核心概念:

  • 服务 = 店铺员工(比如保安、清洁工、收银员)

  • systemctl = 店长的对讲机(管理工具)


🛠️ 常用操作指南

1️⃣ 查看员工状态

systemctl status 保安   # 查看保安的工作状态(是否在岗、工作日志)
 
2️⃣ 临时调度

sudo systemctl start 收银员    # 让收银员立刻上岗
sudo systemctl stop 清洁工     # 让清洁工立刻下班
sudo systemctl restart 网络    # 让网络部员工先下班再上岗(重启服务)
 
3️⃣ 排班设置(开机自启)

sudo systemctl enable 防火墙   # 设置每天开店时防火墙自动上岗
sudo systemctl disable 测试服务 # 取消测试服务的自动排班
 

🌰 实战场景演示

场景: 管理网站服务器(nginx)

  1. 启动服务:

sudo systemctl start nginx
 
  1. 设置开机自启:

sudo systemctl enable nginx
 
  1. 查看运行状态:

systemctl status nginx
# 正常状态显示 Active: active (running)
 
  1. 更新配置后重载(无需重启):

sudo systemctl reload nginx  # 平滑重载配置(不中断服务)
 

📋 服务管理速查表

命令效果类比
systemctl start 服务名立即启动服务临时叫员工来加班
systemctl stop 服务名立即停止服务让员工提前下班
systemctl restart 服务名重启服务让员工休息5分钟再上岗
systemctl reload 服务名重新加载配置(不中断服务)给员工发新工作手册
systemctl enable 服务名设置开机自启把员工加入每日排班表
systemctl disable 服务名取消开机自启从排班表移除员工
systemctl list-unit-files查看所有服务的开机状态查看全店排班总表

⚠️ 注意事项

  1. 权限问题:大部分操作需要加 sudo(就像店长才有调度权限)

  2. 服务名称:实际服务名通常带后缀,如 nginx.service(可省略)

  3. 错误排查

    journalctl -u 服务名      # 查看详细工作日志
    systemctl is-active 服务名 # 快速检查是否在运行
     

💡 高阶技巧

  • 紧急情况:彻底禁用服务(防止被意外启动)

    sudo systemctl mask 危险服务  # 给服务上锁(像停职处理)
    sudo systemctl unmask 危险服务 # 解除锁定
     
  • 批量操作

    systemctl list-units --type=service  # 列出所有正在运行的服务
    systemctl --failed                   # 查看启动失败的服务
     

最终效果:就像智能化的员工调度系统,既能随时调配人手,又能确保关键岗位永不缺席! 🚀

服务状态

在 Linux 中,服务状态是服务管理的关键部分。它用于了解在基于 Linux 的系统上运行的任何给定服务的当前状态。服务可以包括网络进程、后端服务器或在后台运行的任何应用程序。

该命令是用于控制系统和服务管理器的主要使用命令。该命令与 结合使用对于检查服务的状态特别有用。此命令允许管理员查询和控制 systemd 系统和服务管理器的状态。systemctl systemd status systemctl

下面是如何使用该命令检查服务状态的简单示例:systemctl

systemctl status apache2.service

此命令将提供有关常用 Web 服务器 Apache2 的状态信息。 通过有效地管理服务状态,Linux 管理员可以诊断和纠正系统问题,保持最佳性能水平,并防止服务停机。

🏥 服务状态检查就像给程序做体检

关键指标解读:

sudo systemctl status nginx  # 检查nginx服务状态
 

典型体检报告(输出示例):

nginx.service - 高性能Web服务器Loaded: loaded (/lib/systemd/system/nginx.service; enabled)  # 健康档案状态Active: active (running) since 2023-10-01 09:00:00 CST; 2h ago  # 当前生命体征Main PID: 1234 (nginx)         # 身份证号Tasks: 5 (limit: 4915)      # 工作量CGroup: /system.slice/nginx.service├─1234 nginx: master process└─1235 nginx: worker process
 

🔍 体检报告精读指南

1️⃣ 生命体征(Active)
状态显示健康状态应对措施
active (running)健康无需操作
inactive (dead)已停止需要启动服务 systemctl start
failed (Result: exit-code)病危(崩溃)查看日志 journalctl -u 服务名
2️⃣ 健康档案(Loaded)
  • enabled:已加入开机自启名单 ✅

  • disabled:不自动启动 ❌

  • static:只能被其他服务调用启动 ⚠️

3️⃣ 工作负荷(Tasks)

显示进程占用的线程数,突然飙升可能预示"过劳"(需优化配置)


🌰 实战诊断案例

场景: MySQL数据库无法连接

  1. 检查服务状态:

sudo systemctl status mysql
 
  1. 发现异常报告:

Active: failed (Result: exit-code) since...
Process: 5678 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
 

👉 诊断结论:MySQL启动失败

  1. 查看详细病历(日志)

journalctl -u mysql --since "10 minutes ago"
 
  1. 常见病因

    • 配置文件错误(my.cnf有语法错误)

    • 磁盘空间不足

    • 端口被占用


⚡ 快速状态检查技巧

systemctl is-active nginx    # 仅返回 active/inactive
systemctl is-enabled sshd   # 仅返回 enabled/disabled
systemctl list-units --type=service  # 查看所有服务状态
 

📋 服务状态速查表

命令组合用途
systemctl status 服务名完整体检报告
systemctl status -l 服务名显示完整日志(不截断)
systemctl status --no-pager 服务名禁用分页显示(适合脚本调用)

最终效果:就像给每个服务配备了智能手环,随时掌握它们的"心跳"和"健康指数"! 💓

启停服务

在 Linux 中,服务管理是指控制和管理系统服务,例如防火墙、网络、数据库和其他基本服务。这对系统的功能和稳定性起着关键作用。

Linux 中服务管理的基本部分之一是启动和停止服务。系统管理员通常需要在更新或配置更改后启动、停止或重新启动服务。在 Linux 中,可以使用命令完成此作。systemctl

下面是一个简单的示例:

# To start a service
sudo systemctl start service_name   # To stop a service
sudo systemctl stop service_name   # To restart a service
sudo systemctl restart service_name   

替换为要启动、停止或重新启动的服务的名称。始终确保使用 sudo 来执行这些命令,因为它们需要 root 权限。 请注意,这些命令将根据特定的 Linux 发行版及其使用的 init 系统而有所不同。service_name

🎮 服务启停就像操作家电遥控器

核心操作三连:

sudo systemctl start  服务名   # 按下开机键
sudo systemctl stop   服务名   # 按下关机键
sudo systemctl restart 服务名  # 先关后开(重启)
 

🏠 家用电器比喻

Linux 服务家用电器操作场景
nginx 网页服务电视机网站更新后需要重启
ssh 远程连接空调修改配置后重新启动生效
ufw 防火墙门锁系统紧急情况临时关闭检查

🌰 实战案例:维修路由器(重启网络服务)

  1. 暂停网络:

sudo systemctl stop NetworkManager
# 此刻网络会断开!💡建议在服务器前直接操作
 
  1. 修复配置后重启:

sudo systemctl start NetworkManager
# 或直接重启
sudo systemctl restart NetworkManager
 

⚡ 智能操作技巧

  • 无损重载(不中断服务更新配置):

sudo systemctl reload 服务名   # 类似电视换台不关机
 
  • 组合操作

sudo systemctl restart 服务名 && systemctl status 服务名  # 重启后立刻查看状态
 

⚠️ 注意事项

  1. 权限钥匙:记得加 sudo(就像遥控器需要电池)

  2. 服务名称:大部分服务后缀可省略,比如:

    sudo systemctl stop docker.service  # 完整写法
    sudo systemctl stop docker         # 简写
     
  3. 危险操作:停止关键服务可能导致系统崩溃!
    (如:systemctl stop systemd 相当于拔掉遥控器电池)


🔍 查看操作结果

systemctl status 服务名         # 检查服务最新状态
journalctl -u 服务名 -n 20    # 查看最近20条日志

最终效果:像用万能遥控器管理全屋电器,轻松掌控每个设备的运行状态! 📱

检查日志

在 Linux 中的服务管理下检查日志在系统管理和故障排除过程中起着至关重要的作用。日志是深入了解 Linux 系统内部情况的基础。这些记录提供了与系统相关的事件的时间顺序记录,用于调试和排除问题。

可以在 directory 中找到由系统进程、用户和管理员作生成的几个基本日志。可以使用多个命令访问和查看日志。例如,该命令可用于显示内核环缓冲区。大多数系统日志由 命令 管理,并且可以使用命令 进行检查。/var/log dmesg systemd journalctl

journalctl

此命令将显示从启动到您调用日志的整个系统日志。

要显示特定服务的日志,可以使用该选项,后跟服务的名称。-u

journalctl -u service_name

请记住,了解和监控系统日志将为您提供 Linux 环境中发生的事情的清晰视图。这是一项值得培养的重要技能,可以有效地管理和排除系统故障。

📜 Linux日志检查就像查看监控录像

核心概念:

  • 日志 = 系统的全天候监控录像(记录所有操作和异常)

  • journalctl = 万能监控回放器


🔍 常用操作指南

1️⃣ 查看全系统监控(所有日志)

sudo journalctl          # 查看从开机到现在所有记录(按时间排序)
 
2️⃣ 重点排查某个服务

sudo journalctl -u nginx  # 只看nginx服务的"专属摄像头"录像
 
3️⃣ 实时监控(跟踪最新动态)

sudo journalctl -f       # 像看直播一样实时刷新日志(Ctrl+C退出)
 

🌰 实战场景:网站突然打不开

  1. 查看web服务日志:

sudo journalctl -u apache2 --since "10 minutes ago"
# 显示过去10分钟Apache的日志
 
  1. 发现错误信息:

[error] (28)No space left on device: AH00023...
 

👉 诊断结论:磁盘空间不足!


📅 高级筛选技巧

命令示例效果
journalctl --since "2023-10-01"查看10月1日之后的日志
journalctl --until "09:00"查看今早9点前的日志
journalctl -p err只看错误级别的日志
journalctl _PID=1234查看指定进程ID的日志

⚠️ 重要注意事项

  1. 权限钥匙:大部分操作需要 sudo(就像查看监控需要授权)

  2. 日志存储:默认日志保存在 /var/log/journal/(定期清理旧日志)

  3. 快速定位:用 grep 过滤关键词:

sudo journalctl | grep -i error  # 筛选包含error的日志(忽略大小写)
 

💡 特别工具

  • 查看开机日志

sudo journalctl -b          # 本次启动的日志
sudo journalctl -b -1       | 上次启动的日志(适用于崩溃重启后排查)
 
  • 查看内核日志

dmesg                       # 硬件和驱动相关日志(类似 journalctl -k)
 

最终效果:就像拥有时光机和显微镜,能随时回放系统的一举一动! 🔬

创建服务

在 Linux 中,服务管理是指启动、停止、启用和管理软件服务。了解如何控制服务对于控制 Linux 服务器或桌面至关重要。

通常,服务是在后台运行、等待使用或执行基本任务的应用程序。常见的服务类型包括 Web 服务器、数据库服务器和邮件服务器。

因此,在 Linux 中创建服务是指设置这些后台应用程序以运行和执行所需任务的过程。此过程通常包括编写服务文件(脚本),以指定如何使用服务管理系统启动、停止和重新启动服务。

现代 Linux 发行版中最常见的服务管理系统是 systemd。使用 systemd 时,通过将服务单元文件放在特定目录中来定义服务。

例如,我们可以创建一个简单的文件:my_service.service

[Unit]
Description=My Custom Service
After=network.target[Service]
ExecStart=/path/to/your/executable[Install]
WantedBy=multi-user.target

可以将此服务文件放在 systemd 下,以便 systemd 识别它。然后,您将使用 systemd 的命令工具控制服务。/etc/systemd/system/systemctl

请注意,Linux 中的最佳实践要求,出于安全原因,我们尽可能不要以 root 身份运行服务。相反,我们应该创建一个新用户来运行该服务。

🛠️ Linux创建服务就像招聘新员工

核心步骤:

  1. 准备岗位说明书(服务文件)

  2. 办理入职手续(注册服务)

  3. 安排工作(启动并管理服务)


📝 Step 1 - 编写岗位说明书(服务文件)

创建文件 /etc/systemd/system/我的服务.service

[Unit]
Description=我的数据备份服务  # 岗位名称
After=network.target          # 要求网络连通后再上岗[Service]
User=backup_user              # 指定专用员工(非root用户)
ExecStart=/usr/bin/python3 /opt/scripts/backup.py  # 工作内容
Restart=on-failure           # 意外崩溃自动重启[Install]
WantedBy=multi-user.target   # 分配到多用户工作环境
 

👤 Step 0 - 创建专用用户(重要!)

sudo useradd -r -s /bin/false backup_user  # 创建系统用户(-r),禁止登录(-s)
sudo chown -R backup_user /opt/scripts    # 授予脚本访问权限
 

🔄 Step 2 - 注册并启用服务

# 刷新systemd配置(类似HR更新员工名单)
sudo systemctl daemon-reload# 设置开机自启(加入自动排班表)
sudo systemctl enable 我的服务# 立即启动服务
sudo systemctl start 我的服务
 

🔍 Step 3 - 检查工作状态

systemctl status 我的服务       # 查看服务状态
journalctl -u 我的服务 -f      # 实时跟踪服务日志
 

🌰 实战案例:部署Python脚本服务

  1. 创建脚本 /opt/scripts/monitor.py

#!/usr/bin/env python3
import time
while True:print("系统监控中...")time.sleep(60)
 
  1. 创建服务文件:

sudo nano /etc/systemd/system/system_monitor.service
 

内容:

[Unit]
Description=系统监控服务[Service]
User=monitor_user
ExecStart=/usr/bin/python3 /opt/scripts/monitor.py
Restart=always[Install]
WantedBy=multi-user.target
 
  1. 执行部署命令:

sudo useradd -r -s /bin/false monitor_user
sudo chmod +x /opt/scripts/monitor.py
sudo systemctl daemon-reload
sudo systemctl enable --now system_monitor  # 一步启用并启动
 

⚠️ 避坑指南

  1. 路径陷阱

    • 使用绝对路径:/opt/scripts/ 比 ~/scripts/ 更可靠

    • 检查执行权限:chmod +x 脚本文件

  2. 日志查看
    如果服务未运行:

    journalctl -u 服务名 --since "5 minutes ago"
     
  3. 环境变量
    需要特殊环境时,在 [Service] 部分添加:

    Environment="PATH=/custom/path:$PATH"
    EnvironmentFile=/etc/服务环境变量
     

💡 高级配置项

参数作用示例值
RestartSec失败后等待时间RestartSec=10s
WorkingDirectory设置工作目录/var/lib/mydata/
LimitNOFILE限制文件描述符数量65535
ExecReload自定义reload命令/bin/kill -HUP $MAINPID

最终效果:就像给脚本穿上了服务的外衣,拥有开机自启、崩溃重启等超能力! 🦸♂️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch 分词器介绍及测试:Standard(标准分词器)、English(英文分词器)、Chinese(中文分词器)、IK(IK 分词器)

ElasticSearch 分词器介绍及测试:Standard(标准分词器)、English(英文分词器)、Chinese(中文分词器)、IK(IK 分词器) ElasticSearch 分词器介绍及测试1. Standard Analyz…

【计算机网络】确认家庭网络是千兆/百兆带宽并排查问题

要确认你的带宽是千兆(1000Mbps)还是百兆(100Mbps),可以通过以下方法逐步排查: 一、检查物理设备 1. 查看路由器和光猫的网口 千兆网口:路由器或光猫的网口旁通常会标注 “10/100/1000M” 或 …

[数据分享第七弹]全球洪水相关数据集

洪水是一种常见的自然灾害,在全球范围内造成了极为严重的威胁。近年来,针对洪水事件的检测分析,以及对于洪水灾害和灾后恢复能力的研究日渐增多,也产生了众多洪水数据集。今天,我们一起来收集整理一下相关数据集。&…

深入探讨AI-Ops架构 第一讲 - 运维的进化历程以及未来发展趋势

首先,让我们一起回顾运维的进化之路,然后再深入探讨AI-Ops架构的细节。 运维的进化历程 1. AI 大范围普及前的运维状态 (传统运维) 在AI技术尚未广泛渗透到运维领域之前,我们称之为传统运维,其主要特点是: 人工驱动…

Hive-数据倾斜优化

数据倾斜的原因 1)key分布不均匀,本质上就是业务数据有可能会存在倾斜 2)某些SQL语句本身就有数据倾斜 关键词 情形 后果 Join A、其中一个表较小,但是key集中; B、两张表都是大表,key不均 分发到…

番外篇 - Docker的使用

一、Docker的介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完…

深度学习与普通神经网络有何区别?

深度学习与普通神经网络的主要区别体现在以下几个方面: 一、结构复杂度 普通神经网络:通常指浅层结构,层数较少,一般为2-3层,包括输入层、一个或多个隐藏层、输出层。深度学习:强调通过5层以上的深度架构…

RuleOS:区块链开发的“新引擎”,点燃Web3创新之火

RuleOS:区块链开发的“新引擎”,点燃Web3创新之火 在区块链技术的浪潮中,RuleOS宛如一台强劲的“新引擎”,为个人和企业开发去中心化应用(DApp)注入了前所未有的动力。它以独特的设计理念和强大的功能特性&…

c# MimeEntity修改邮件附件名称

在C#中,当你使用如MimeKit库来处理电子邮件时,你可以通过修改MimeEntity的ContentDisposition属性来更改邮件附件的名称。以下是如何做到这一点的步骤: 1. 添加MimeKit引用 首先,确保你的项目中已经添加了MimeKit库。如果你使用…

Windows编译环境搭建(MSYS2\MinGW\cmake)

我的音视频/流媒体开源项目(github) 一、基础环境搭建 1.1 MSYS2\MinGW 参考:1. 基于MSYS2的Mingw-w64 GCC搭建Windows下C开发环境_msys2使用mingw64编译 在Widndows系统上,使用gcc工具链(g)进行C程序开发?可以的&a…

TikTok美国战略升级:聚焦美食旅行,本地化服务如何重塑市场格局

平台深耕本土内容生态,餐饮旅游创作者迎流量红利,算法推荐机制激发地域经济新活力 过去一年,TikTok在美国市场的动作频频引发行业关注。从早期以娱乐、舞蹈为主的全球化内容,到如今将资源向美食、旅行两大垂类倾斜,这…

Unity Dots环境配置

文章目录 前言环境配置1.新建Unity 工程2.安装Entities包2.安装EntitiesGraphics包3.安装URP渲染管线 Dots窗口 前言 DOTS(Data-Oriented Technology Stack)是Unity推出的一种用于开发高性能游戏和应用的数据导向技术栈,包含三大核心组件&am…

manus对比ChatGPT-Deep reaserch进行研究类学术相关数据分析!谁更胜一筹?

没有账号,只能挑选一个案例 一夜之间被这个用全英文介绍全华班出品的新爆款国产AI产品的小胖刷频。白天还没有切换语言的选项,晚上就加上了。简单看了看团队够成,使用很长实践的Monica创始人也在其中。逐渐可以理解,重心放在海外产…

Python项目-基于Django的在线教育平台开发

1. 项目概述 在线教育平台已成为现代教育的重要组成部分,特别是在后疫情时代,远程学习的需求显著增加。本文将详细介绍如何使用Python的Django框架开发一个功能完善的在线教育平台,包括系统设计、核心功能实现以及部署上线等关键环节。 本项…

【自学笔记】Numpy基础知识点总览-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Numpy基础知识点总览目录1. 简介Numpy是什么为什么使用Numpy 2. 数组对象(ndarray)创建数组数组的属性数组的形状操作 3. 数组的基本操作数组…

Kubernetes中的 iptables 规则介绍

#作者:邓伟 文章目录 一、Kubernetes 网络模型概述二、iptables 基础知识三、Kubernetes 中的 iptables 应用四、查看和调试 iptables 规则五、总结 在 Kubernetes 集群中,iptables 是一个核心组件, 用于实现服务发现和网络策略。iptables 通…

.NET Core全屏截图,C#全屏截图

.NET Core全屏截图,C#全屏截图 使用框架: WPF.NET 8 using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Threading.Tasks; using System.W…

Java直通车系列15【Spring MVC】(ModelAndView 使用)

目录 1. ModelAndView 概述 2. ModelAndView 的主要属性和方法 主要属性 主要方法 3. 场景示例 示例 1:简单的 ModelAndView 使用 示例 2:使用 ModelAndView 处理列表数据 示例 3:使用 ModelAndView 处理异常情况 1. ModelAndView 概…

视频图像刷新到HTTP的原理

上一篇博客已经说了cgi拿到了共享内存的程序还需要处理的才能够真正刷新到网页里面去 HTTP协议介绍 HTTP中文名称是超文本传输协议,它是一个简单的请求.响应协议,HTTP协议它运行在TCP上面,它是互联网数据通信的基础。 几乎所有的网页请求和互…

2024四川大学计算机考研复试上机真题

2024四川大学计算机考研复试上机真题 2024四川大学计算机考研复试机试真题 历年四川大学计算机考研复试机试真题 在线评测:https://app2098.acapp.acwing.com.cn/ 分数求和 题目描述 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前 …