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

python编写liunx服务器登陆自动巡检脚本

前言:

用户需要一份用Python编写的Linux系统巡检脚本,检查内存、磁盘、CPU使用率,还有网络连通性。
首先,我得确定用户的使用场景。可能用户是系统管理员,需要定期监控服务器状态,确保系统正常运行。
或者是开发人员,想自动化巡检流程,减少手动检查的工作量。
接下来,用户提到的具体指标有内存、磁盘、CPU和网络。
我需要考虑如何用Python获取这些信息。
对于Linux系统,通常可以通过读取/proc文件系统或者使用命令行工具来获取这些数据。
比如,内存信息可以从/proc/meminfo读取,磁盘使用情况可以用psutil库或者调用df命令,
CPU使用率可以用psutil或者读取/proc/stat,网络连通性可以用ping命令或者socket库。
然后,用户可能希望脚本的输出清晰易读,可能需要格式化输出,比如用表格形式展示结果。
颜色区分不同状态,比如红色表示警告,绿色表示正常,这样用户一眼就能看出问题所在。
还要考虑是否需要参数化,比如允许用户指定检查的磁盘路径或IP地址,但用户没有提到,可能基础版本不需要,但可以预留扩展的可能性。
另外,日志记录功能可能有用,方便后续查看历史巡检结果。
需要处理权限问题,比如某些命令可能需要sudo权限,但用户可能希望脚本在普通用户权限下运行,所以应选择不需要特权的方法。
例如,使用psutil库可以跨平台,并且不需要执行外部命令,更安全可靠。 关于网络检查,用户可能想检测内网关键服务或外网连通性。
比如,默认检查8.8.8.8和百度,但用户可能需要自定义,所以可以设计成可配置的列表。
最后,确保代码兼容Python3,并且添加必要的异常处理,避免脚本因为某个检查项失败而终止。
例如,捕获异常并记录错误信息,继续执行其他检查。

总结下来,脚本需要:

  1. 使用psutil库获取系统信息(内存、磁盘、CPU)。
  2. 使用subprocess执行ping命令检查网络。
  3. 格式化输出,用颜色标记状态。
  4. 可配置的检查项,如磁盘路径、IP列表。
  5. 添加日志记录功能。
  6. 异常处理,确保健壮性。 现在开始编写代码,确保各部分功能正确,
    并测试在不同情况下的表现,比如磁盘空间不足时是否正确报警,网络不通时的处理等。
    同时,提供使用说明,指导用户安装依赖(如psutil)和如何运行脚本。

以下是一个基于Python 3的Linux系统巡检脚本,使用psutil库获取系统信息,包含您要求的五大核心指标检测:

#!/usr/bin/env python3
import psutil
import subprocess
import platform
from datetime import datetime
import socket
import sys# 颜色配置
COLORS = {"red": "\033[91m","green": "\033[92m","yellow": "\033[93m","orange": "\033[38;5;208m","end": "\033[0m"
}def check_uptime():"""获取系统运行时间和启动时间"""boot_time = psutil.boot_time()now = datetime.now().timestamp()# 计算运行时间uptime_seconds = now - boot_timedays, remainder = divmod(uptime_seconds, 86400)hours, remainder = divmod(remainder, 3600)minutes, seconds = divmod(remainder, 60)return {"days": int(days),"hours": int(hours),"minutes": int(minutes),"seconds": int(seconds),"boot_time": datetime.fromtimestamp(boot_time).strftime("%Y-%m-%d %H:%M:%S")}def get_host_ip():"""获取主机所有IPv4地址(排除回环地址)"""interfaces = psutil.net_if_addrs()ips = []for name, addrs in interfaces.items():for addr in addrs:if addr.family == socket.AF_INET and not addr.address.startswith('127.'):ips.append({"interface": name,"ip": addr.address,"netmask": addr.netmask})return {"ips": ips}def check_memory():"""检查内存使用率(修改为GB单位)"""mem = psutil.virtual_memory()return {"total": round(mem.total / (1024**3), 1),  # 转换为GB"used": round(mem.used / (1024**3), 1),"free": round(mem.free / (1024**3), 1),"percent": mem.percent}def check_disk(path='/'):"""检查磁盘使用率(修改为GB单位)"""disk = psutil.disk_usage(path)return {"total": round(disk.total / (1024**3), 1),  # 转换为GB"used": round(disk.used / (1024**3), 1),"free": round(disk.free / (1024**3), 1),"percent": disk.percent}def check_cpu():"""检查CPU使用率"""return {"usage": psutil.cpu_percent(interval=1),"cores": psutil.cpu_count(logical=False),"threads": psutil.cpu_count(logical=True)}def check_load():"""检查系统负载"""load_avg = psutil.getloadavg()cpu_cores = psutil.cpu_count(logical=False)  # 获取物理核心数return {"1min": load_avg[0],"5min": load_avg[1],"15min": load_avg[2],"cores": cpu_cores}def check_network(hosts=['8.8.8.8', 'www.baidu.com']):"""网络连通性检查"""results = {}for host in hosts:param = '-n' if platform.system().lower()=='windows' else '-c'command = ['ping', param, '3', host]results[host] = subprocess.call(command, stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL) == 0return resultsdef format_result(title, data, threshold=80):print(f"\n{COLORS['orange']}=== {title} ==={COLORS['end']}")"""更新输出格式"""if title == "内存使用率":print(f"总量: {data['total']} GB | 已用: {data['used']} GB | 剩余: {data['free']} GB")elif title == "磁盘使用率":print(f"总量: {data['total']} GB | 已用: {data['used']} GB | 剩余: {data['free']} GB")elif title == "CPU使用率":color = COLORS['red'] if data['usage'] > threshold else COLORS['green']print(f"使用率: {color}{data['usage']}%{COLORS['end']}")print(f"物理核心: {data['cores']} | 逻辑线程: {data['threads']}")elif title == "网络连通性":for host, status in data.items():status_str = f"{COLORS['green']}{COLORS['end']}" if status else f"{COLORS['red']}不通{COLORS['end']}"print(f"{host}: {status_str}")elif title == "系统负载":# 计算负载核心比load_ratio_1min = data['1min'] / data['cores'] if data['cores'] > 0 else 0# 设置颜色阈值if load_ratio_1min > 2.0:color = COLORS['red']status = "❗过载"elif load_ratio_1min > 1.0:color = COLORS['yellow']status = "⚠️警告"else:color = COLORS['green']status = "✅正常"print(f"当前状态: {color}{status}{COLORS['end']}")print(f"1分钟负载: {data['1min']:.2f} | 5分钟: {data['5min']:.2f} | 15分钟: {data['15min']:.2f}")print(f"物理核心: {data['cores']} | 建议阈值: 1.0-{data['cores']*2:.1f}")elif title == "系统运行时间":print(f"运行时长: {data['days']}{data['hours']}{data['minutes']}分")print(f"系统启动: {data['boot_time']}")elif title == "主机网络信息":if len(data['ips']) == 0:print(f"{COLORS['red']}未找到有效IP地址{COLORS['end']}")else:for entry in data['ips']:print(f"接口 {entry['interface']}: {entry['ip']}/{entry['netmask']}")def main():# 记录检查时间print(f"{COLORS['yellow']}系统巡检时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}{COLORS['end']}")# 执行所有检查checks = [("主机网络信息", get_host_ip()),    # 新增("系统运行时间", check_uptime()),  # 新增("内存使用率", check_memory()),("磁盘使用率", check_disk()),("CPU使用率", check_cpu()),("系统负载", check_load()), ("网络连通性", check_network())]# 输出结果for title, data in checks:format_result(title, data)# 添加系统信息print(f"\n{COLORS['orange']}=== 系统信息 ==={COLORS['end']}")print(f"主机名: {platform.node()}")print(f"系统版本: {platform.platform()}")if __name__ == "__main__":try:main()except KeyboardInterrupt:print("\n检测已中止")sys.exit(1)except Exception as e:print(f"{COLORS['red']}检测出错: {str(e)}{COLORS['end']}")sys.exit(1)

使用说明:

  1. 安装依赖:pip install psutil
  2. 运行脚本:python3 system_check.py
    功能特性:
  3. 彩色终端输出:使用不同颜色标识健康状态(红色>80%,绿色正常)
  4. 核心指标检测
    • 内存:总/已用/剩余内存及使用率
    • 磁盘:根分区使用情况
    • CPU:使用率及核心数
    • 网络:默认检测谷歌DNS和百度连通性
  5. 扩展功能
    • 异常处理机制(支持Ctrl+C中断)
    • 系统基本信息展示
    • 时间戳记录

输出示例:

系统巡检时间:2024-02-20 14:30:45=== 内存使用率 ===
使用率: 58.2%
总量: 15941 MB | 已用: 9273 MB | 剩余: 6668 MB=== 磁盘使用率 ===
挂载点: / | 使用率: 75.5%
总量: 491520 MB | 已用: 370112 MB | 剩余: 121408 MB=== CPU使用率 ===
使用率: 32.1%
物理核心: 8 | 逻辑线程: 16=== 网络连通性 ===
8.8.8.8: 通
www.baidu.com: 通=== 系统信息 ===
主机名: ubuntu-server
系统版本: Linux-5.4.0-88-generic-x86_64-with-glibc2.29

效果图

在这里插入图片描述

自定义建议:

  1. 修改检测阈值:调整format_result中的threshold参数
  2. 增加检测项:在check_disk中指定其他挂载点
  3. 修改检测目标:调整check_network的hosts列表
  4. 添加告警机制:当指标超过阈值时发送邮件/钉钉通知

彩蛋

1、要实现通过SSH连接服务器时自动执行巡检脚本。

在文件末尾追加以下内容

#只是root用户可以使用
echo -e '\n# 登录时执行巡检脚本\npython3 /path/to/your_script.py' >> ~/.bashrc

用户通过SSH登录 → 执行巡检脚本 → 显示巡检结果 → 进入正常shell环境

效果图

在这里插入图片描述

所有用户登陆服务器都可以执行这个巡检脚本

vim /etc/ssh/sshd_config
#在文件末尾添加 排除特殊连接方式(防止影响SCP/SFTP):
Match AllForceCommand if [[ -z $SSH_ORIGINAL_COMMAND ]]; then python3 /usr/local/bin/system_check.py; exec $SHELL; else eval "$SSH_ORIGINAL_COMMAND"; fi
#重启ssh服务
systemctl restart sshd

至此结束,感谢观看。

无人扶我凌云志,我自踏血之山巅。

相关文章:

python编写liunx服务器登陆自动巡检脚本

前言: 用户需要一份用Python编写的Linux系统巡检脚本,检查内存、磁盘、CPU使用率,还有网络连通性。 首先,我得确定用户的使用场景。可能用户是系统管理员,需要定期监控服务器状态,确保系统正常运行。 或者…...

基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成

本教程的演示都将在 Flink CDC CLI 中进行,无需一行 Java/Scala 代码,也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业,包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…...

数据结构——并查集

AcWing - 算法基础课 Acwing——合并集合 代码如下&#xff1a; #include <bits/stdc.h>using namespace std; #define fs first #define sc second #define endl \n #define all(x) x.begin(), x.end() typedef long long ll; typedef pair<int, int> PII;cons…...

详细解析d3dx9_27.dll丢失怎么办?如何快速修复d3dx9_27.dll

运行程序时提示“d3dx9_27.dll文件缺失”&#xff0c;通常由DirectX组件损坏或文件丢失引起。此问题可通过系统化修复方法解决&#xff0c;无需重装系统或软件。下文将详细说明具体步骤及注意事项。 一.d3dx9_27.dll缺失问题的本质解析 当系统提示“d3dx9_27.dll丢失”时&…...

【STL】4.<list>

list 前言list容器一.list初始化二.常用函数三.排序 总结 前言 stl系列主要讲述有关stl的文章&#xff0c;使用STL可以大大提高程序开发的效率和代码的可维护性&#xff0c;且在算法比赛中&#xff0c;STL可以帮助我们更方便地实现各种算法。提高我们的效率。 list容器 要使用…...

小程序中头像昵称填写

官方文档 参考小程序用户头像昵称获取规则调整公告 新的小程序版本不能通过wx.getUserProfile和wx.getUserInfo获取用户信息 <van-field label"{{Avatar}}" label-class"field-label" right-icon-class"field-right-icon-class"input-class&…...

vLLM服务设置开机自启动(Linux)

要在开机时进入指定的 conda 环境并启动此 vllm 服务&#xff0c;您可以通过以下步骤设置一个 systemd 服务来自动执行脚本。 一、第一步&#xff1a;创建一个启动脚本 1.打开终端并创建启动脚本&#xff0c;例如 /home/username/start_vllm.sh&#xff08;请替换 username 为…...

Cherno 游戏引擎笔记(91~111)

好久不见&#xff01; 个人库的地址&#xff1a;&#xff08;GitHub - JJJJJJJustin/Nut: The game_engine which learned from Cherno&#xff09;&#xff0c;可以看到我及时更新的结果。 -------------------------------Saving & Loading scene-----------------------…...

面试八股文--数据库基础知识总结(1)

1、数据库的定义 数据库&#xff08;DataBase&#xff0c;DB&#xff09;简单来说就是数据的集合数据库管理系统&#xff08;Database Management System&#xff0c;DBMS&#xff09;是一种操纵和管理数据库的大型软件&#xff0c;通常用于建立、使用和维护数据库。数据库系统…...

算法系列之动态规划

动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是一种用于解决复杂问题的算法设计技术。它通过将问题分解为更小的子问题&#xff0c;并存储这些子问题的解来避免重复计算&#xff0c;从而提高算法的效率。本文将介绍动态规划的基本概念、适用场景、复…...

网站漏洞安全测试 具体渗透思路分析

渗透测试这些是经常谈到的问题了&#xff0c;我觉得当有了渗透接口测试之后你就会发现渗透测试这一方面也就是&#xff1a;1.基本漏洞测试&#xff1b;2.携带"低调"构思的心血来潮&#xff1b;3.锲而不舍的信念。我们在对网站&#xff0c;APP进行渗透测试的过程中会发…...

Spring Boot(七):Swagger 接口文档

1. Swagger 简介 1.1 Swagger 是什么&#xff1f; Swagger 是一款 RESTful 风格的接口文档在线自动生成 功能测试功能软件。Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。目标是使客户端和文件系统作为服务器以同样的…...

【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】

文章目录 前言电脑配置&#xff1a;安装的Deepseek版本&#xff1a;使用的UI框架&#xff1a;体验效果展示&#xff1a;本地部署体验总结 部署过程Ollama部署拉取模型运行模型Openwebui部署运行Ollama服务在Openwebui中配置ollama的服务 后话 前言 deepseek最近火的一塌糊涂&a…...

测试的BUG分析

在了解BUG之前,我们要先了解软件测试的生命周期,因为大多数BUG都是在软件测试的过程中被发现的 软件测试的生命周期 在了解 软件测试的生命周期 之前,我们要先了解 软件的生命周期 ,虽然他们之间只差了两个字,但是差距还是很大的 首先是 软件生命周期 ,这个是站在 软件 的角…...

linux里面的过滤符号 | 是如何实现的

ls -l | grep ".txt" 的实现过程涉及无名管道的创建、进程的创建&#xff08;fork()&#xff09;以及输入输出的重定向&#xff08;dup2()&#xff09;。以下是详细的实现步骤和代码示例&#xff1a; 实现步骤 创建无名管道&#xff1a; 使用pipe()系统调用创建一个无…...

结构型模式--组合模式

概念 组合人模式是结构型设计模式的一种&#xff0c;主要是用于解决代码中出现类像树一样进行组合而出现的组合结构的相关操作问题。使其树中的任意一个节点&#xff08;无论是子节点还是父节点&#xff09;都可以使用同一套接口进行操作。 使用场景 1、如果希望我们对象组合…...

drupal可以自动将测试环境的网页部署到生产环境吗

在 Drupal 中&#xff0c;自动将测试环境的网页部署到生产环境通常是通过设置合适的开发和部署流程来实现的。这种自动化部署过程通常涉及以下几个步骤&#xff1a; 1. 版本控制&#xff08;Git&#xff09; 为了保证测试环境和生产环境的一致性&#xff0c;首先需要使用 Git…...

Android应用app实现AI电话机器人接打电话

Android应用app实现AI电话机器人接打电话 --安卓AI电话机器人 一、前言 【Dialer3.0智能拨号器】Android版手机app&#xff0c;由于采用蓝牙电话的方式来调用手机SIM卡发起呼叫、接听来电&#xff0c;并接收和处理通话的声音&#xff0c;通常我们以“蓝牙电话方案”来称呼它。 …...

【面试宝典】Java中创建线程池的几种方式以及区别

强烈推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站:人工智能 创建线程池有多种方式&#xff0c;主要通过 Java 的 java.util.concurrent 包提供的 Executors 工具类来实现。以下是几…...

【数据结构】哈希表

目录 哈希表 基本思想 基本原理 哈希表工作机制简化描述 关于查找、插入和删除 HashMap 主要成员变量 主要方法 内部实现细节 注意事项 哈希表 哈希表是一种基于哈希函数的数据结构&#xff0c;它通过键值对的形式存储数据&#xff0c;并允许通过键快速查找对应的值…...

MySQL 使用 `WHERE` 子句时 `COUNT(*)`、`COUNT(1)` 和 `COUNT(column)` 的区别解析

文章目录 1. COUNT() 函数的基本作用2. COUNT(*)、COUNT(1) 和 COUNT(column) 的详细对比2.1 COUNT(*) —— 统计所有符合条件的行2.2 COUNT(1) —— 统计所有符合条件的行2.3 COUNT(column) —— 统计某一列非 NULL 的记录数 3. 性能对比3.1 EXPLAIN 分析 4. 哪种方式更好&…...

RabbitMQ系列(一)架构解析

RabbitMQ 架构解析 RabbitMQ 是一个基于 AMQP 协议的开源消息中间件&#xff0c;其核心架构通过多组件协作实现高效、可靠的消息传递。以下是其核心组件与协作流程的详细说明&#xff1a; 一、核心组件与功能 Broker&#xff08;消息代理服务器&#xff09; RabbitMQ 服务端核…...

如何让传统制造企业从0到1实现数字化突破?

随着全球制造业不断向智能化、数字化转型&#xff0c;传统制造企业面临着前所未有的机遇与挑战。数字化转型不仅是技术的革新&#xff0c;更是管理、文化、业务流程等全方位的变革。从零开始&#xff0c;如何带领一家传统制造企业走向数字化突破&#xff0c;是许多企业领导者面…...

基于Spring Boot的二手物品交易平台设计与实现(LW+源码)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

释放 Cursor 的全部潜能:快速生成智能 Cursor Rules

释放 Cursor 的全部潜能&#xff1a;使用 PromptCoder 从 package.json 快速生成智能 Cursor Rules 我们将深入探讨如何利用您项目中的 package.json 文件&#xff0c;轻松生成 Cursor Rules&#xff0c;并通过 PromptCoder 这个强大的工具&#xff0c;快速创建高质量的 curso…...

C#高级:结合Linq的SelectMany方法实现笛卡尔积效果

一、笛卡尔积定义 又称直积&#xff0c;表示为X Y&#xff0c;第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 二、基础示例 class Program {static void Main(string[] args){try{List<List<string>> input new List<List<string&g…...

【洛谷入门赛】B4018 游戏与共同语言

题意 这里有两个队伍分别叫 A 和 B。 分别给定这两个队伍的胜利数、净胜局、平局数量。 求哪个队更厉害&#xff0c;就输出哪个。 具体比较规则如下&#xff1a; 两队中胜利数高的队伍更厉害。 若胜利数相同&#xff0c;净胜数高的队伍更厉害。 若净胜数仍然相同&#x…...

Python学习总结

客户端与服务端聊天窗口 服务端 导入 wxPython 用于创建图形界面。 socket 用于网络通信&#xff0c;AF_INET 是 IPv4 地址族&#xff0c;SOCK_STREAM 表示流式套接字&#xff08;TCP&#xff09;。 利用wxPython 创建图形界面&#xff0c;并通过 socket 与服务器通信。 主要…...

android系统_模拟ZygoteServer写一个socket通信

目录 一,模拟ZygoteServer 二,Client 代表app 三,输出结果 四,结束语 一,模拟ZygoteServer ZygoteServer&#xff0c;不断的监听来自客户端的请求 package org.study.tiger;import java.io.*; import java.net.*; import java.util.concurrent.*;import java.io.*; impor…...

LangChain教程 - RAG - PDF问答

系列文章索引 LangChain教程 - 系列文章 在现代自然语言处理&#xff08;NLP&#xff09;中&#xff0c;基于文档内容的问答系统变得愈发重要&#xff0c;尤其是当我们需要从大量文档中提取信息时。通过结合文档检索和生成模型&#xff08;如RAG&#xff0c;Retrieval-Augment…...

李代数(Lie Algebras)与Attention:深度学习中的数学之美

李代数与Attention&#xff1a;深度学习中的数学之美 引言 作为一名深度学习研究者&#xff0c;您一定对Transformer模型和其中的注意力机制&#xff08;Attention&#xff09;不陌生。Attention通过查询&#xff08;Query&#xff09;、键&#xff08;Key&#xff09;和值&a…...

docker本地镜像源搭建

最近Deepseek大火后&#xff0c;接到任务就是帮客户装Dify&#xff0c;每次都头大&#xff0c;因为docker源不能用&#xff0c;实在没办法&#xff0c;只好自己搭要给本地源。话不多说具体如下&#xff1a; 1、更改docker的配置文件&#xff0c;添加自己的私库地址&#xff0c…...

监督学习单模型—线性模型—LASSO回归、Ridge回归

目标变量通常有很多影响因素&#xff0c;通过各类影响因素构建对目标变量的回归模型&#xff0c;能够实现对目标的预测。但根据稀疏性的假设&#xff0c;即使影响一个变量的因素有很多&#xff0c;其关键因素永远只会是少数。在这种情况下&#xff0c;还用传统的线性回归方法来…...

StableDiffusion打包 项目迁移 项目分发 1

文章目录 SD项目迁移前置知识webui-user.batwebui.batlaunch_utils.py 下一篇开始实践 SD项目迁移 显卡驱动更新&#xff1a;https://www.nvidia.cn/geforce/drivers/ 下载安装三个程序&#xff1a; python3.10.6: https://www.python.org/downloads/release/python-3106/gi…...

【C++】模板初阶

文章目录 一. 泛型编程1.1 什么是模板1.2 为什么要使用模板 二. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.4.1 隐式实例化2.4.2 显式实例化 2.5 模板参数的匹配原则 三. 类模板3.1 类模板的定义格式3.2 类模板的实例化3.3 在类模板外…...

STM32学习【4】ARM汇编(够用)

目录 ARM汇编语言基础写在前面 1. ARM汇编的分类2. 关于指令集指令集切换Thumb2指令集统一汇编语言&#xff08;UAL&#xff09;常用汇编指令 3. 汇编格式立即数与伪指令 4. 操作内存的汇编指令LDR&#xff1a;从内存加载数据到CPU寄存器STR&#xff1a;将数据从寄存器存储到内…...

傅里叶分析

傅里叶分析之掐死教程&#xff08;完整版&#xff09;更新于2014.06.06 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具&#xff0c;更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是&#xff0c;傅里叶分析的公式看起来太复…...

Jmeter插件下载及安装

1、在Jmeter官网&#xff08;Install :: JMeter-Plugins.org&#xff09;下载所需插件 2、将下载的插件复制到jmeter文件下的lib/ext文件里&#xff08;PS&#xff1a;D:\Jmeter\apache-jmeter-5.6.2\lib\ext&#xff09; 3、打开Jmeter&#xff0c;选择 选项----Plugins Manag…...

Docker迁移/var/lib/docker之后镜像容器丢失问题

迁移/var/lib/docker时&#xff0c;如果目标目录少写一个/&#xff0c;/etc/docker/daemon.json中的data-root后面需要多加一级目录docker。 若迁移命令如下 rsync -avz /var/lib/docker /home/docker/ 在/etc/docker/daemon.json中添加如下内容 "data-root": &q…...

【C++】深入理解List:双向链表的应用

凭时间赢来的东西&#xff0c;时间肯定会为之作证。 前言 这是我自己学习C的第七篇博客总结。后期我会继续把C学习笔记开源至博客上。 上一期笔记是关于C的vector类知识&#xff0c;没看的同学可以过去看看&#xff1a;【C】探索Vector&#xff1a;灵活的数据存储解决方案-CS…...

如何使用 Ollama 的 API 来生成文本

如何使用 Ollama 的 API 来生成文本 简介 生成文本 生成文本的示例 加载模型 卸载模型 简介 Ollama 提供了一个 RESTful API&#xff0c;允许开发者通过 HTTP 请求与 Ollama 服务进行交互。这个 API 覆盖了所有 Ollama 的核心功能&#xff0c;包括模型管理、运行和监控。本…...

Redis除了做缓存还有哪些应用场景

我用「现实场景代码简例」帮你彻底掌握Redis的18般武艺。先记住这句话&#xff1a;Redis是数据结构的瑞士军刀。以下分7大核心应用方向讲解&#xff1a; 一、高频面试答案速记版 1. 分布式锁 → 超市储物柜机制 2. 计数器 → 直播间点赞统计 3. 排行榜 → 游戏战力榜 4. 消息队…...

软件工程复试专业课-测试

测试 1 软件质量2 黑盒测试2.1 概念2.2 等价划分类 2.3 边值分析2.4 错误推测2.5 因果图 3 白盒测试3.1概念3.2 覆盖标准3.2.1 语句覆盖3.2.2 判断覆盖3.2.3 条件覆盖3.2.4 判定/条件覆盖3.2.5 条件组合覆盖3.2.6 路径覆盖 4 软件测试的四个阶段5 测试工具 1 软件质量 定义&…...

html css js网页制作成品——HTML+CSS甜品店网页设计(5页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Maven的传递性、排除依赖、生命周期、插件

一、Maven的传递性 蓝色背景中的两个jar包是projectA的直接依赖&#xff0c;其余的Jar包是projectA的间接依赖。 projectA可以使用直接依赖&#xff0c;也可以使用间接依赖。 maven-projectB项目引入了maven-projectC(整个项目打成了jar包&#xff09;和junit两个jar包。 ma…...

Java 调试模式下 Redisson 看门狗失效

一、场景分析 前几天在做分布式锁测试&#xff1a; 在调试模式下&#xff0c;lock.lock() 之后打上断点&#xff0c;想测试一下在当前线程放弃锁之前&#xff0c;别的线程能否获取得到锁。 发现调试模式下&#xff0c;看门狗机制失效了&#xff0c;Redis 上 30 秒后&#xff0…...

PHP下载安装以及基本配置

目录 引言 官网 下载 配置 1. 鼠标右键“此电脑”>“属性” 2. 打开高级系统设置 3. 打开环境变量 4. 双击系统变量中的path 5. 新建新的path 6. 将刚刚安装的位置加入环境变量 7. 检查是否安装成功 引言 PHP&#xff08;“PHP: Hypertext Preprocessor”&#…...

Vue nextTick原理回顾

nextTick就是将异步函数放在下一次实践循环的微任务队列中执行 实现原理比较简单&#xff0c;极简版本&#xff1a; function myNextTick(cb){let p;pPromise.resolve().then(cb)return cb?p:Promise.resolve() }复杂版本&#xff0c;考虑异步函数入队、执行锁、兼容处理 l…...

【Javascript】js精度丢失

当JS处理大整数或者浮点数的时候会出现精度丢失的情况。 Javascript的数字都使用双精度浮点数表示&#xff0c;遵循IEEE754标准 比如我遇到的问题&#xff0c;对一个小数的四舍五入&#xff0c;保留2位小数&#xff1a; 235.985≈235.98 235.9851≈235.99 原理请大家参考百度&…...

Go在1.22版本修复for循环陷阱

记录 前段时间升级Go版本碰到一个大坑&#xff0c;先记录。 先上代码案例&#xff1a; func main() {testClosure() }func testClosure() {for i : 0; i < 5; i {defer func() {fmt.Println(i)}()} }在1.22之下&#xff08;不包括1.22&#xff09;版本&#xff1a; 输出的…...