linux运维之shell编程

Shell 编程在系统运维中及其重要

1. Shell 编程概述

Shell 是一种命令行解释器,能够执行操作系统的命令。Shell 脚本是一个包含一系列 Shell 命令的文件,它可以被执行,以自动化和批量处理任务。常用的 Shell 类型包括 bash、sh、zsh 等。Shell 编程本质上是利用这些命令和控制结构(如条件判断、循环等)来创建自动化任务。

2. 自动化系统管理任务

运维工程师的工作常常包括重复性高的任务,Shell 编程可以将这些任务自动化,减少手动操作,提高效率和减少错误。

常见的自动化任务包括:

  • 备份:自动定期备份文件、数据库、配置文件等。
  • 日志轮转和清理:定期清理过期的日志文件,防止占满磁盘空间。
  • 安全检查:定期扫描系统中的潜在安全风险(如非法登录、弱密码等)。
  • 监控系统状态:定期检查系统的 CPU、内存、磁盘空间等状态,并在出现异常时发送警报。

示例:自动化备份脚本

#!/bin/bash
# 自动备份脚本
BACKUP_DIR="/data"
DEST_DIR="/backup"
DATE=$(date +%Y%m%d%H%M)
TAR_FILE="${DEST_DIR}/backup_${DATE}.tar.gz"

# 创建备份
tar -czf $TAR_FILE $BACKUP_DIR

# 输出备份日志
echo "Backup completed: $TAR_FILE"

这个脚本会自动备份指定的 /data 目录,并将备份文件保存到 /backup 目录下,文件名包含当前日期时间,便于管理。

3. 批量操作与配置管理

在大型系统中,可能有大量的服务器需要统一配置、更新、安装软件等。使用 Shell 脚本可以在多个服务器上批量执行命令,从而避免逐台操作。

示例:批量安装软件

#!/bin/bash
# 批量安装软件包
SERVERS=("server1" "server2" "server3")
PACKAGE="nginx"

for SERVER in "${SERVERS[@]}"
do
  echo "Installing $PACKAGE on $SERVER..."
  ssh $SERVER "sudo apt-get install -y $PACKAGE"
done

该脚本通过 SSH 远程连接到多个服务器,批量安装指定的软件包。

4. 系统健康监控与报警

Shell 编程非常适合于实现基础的系统监控和报警机制。例如,运维人员可以编写脚本定期检查系统的磁盘使用情况、内存状态等,并在发现异常时触发邮件或短信报警。

示例:磁盘空间监控脚本

#!/bin/bash
# 磁盘空间监控
THRESHOLD=90
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')

if [ $DISK_USAGE -gt $THRESHOLD ]; then
  echo "Warning: Disk usage is over ${THRESHOLD}%!" | mail -s "Disk Space Alert" admin@example.com
fi

这个脚本会定期检查根目录(/)的磁盘使用情况,如果超过设定的阈值(如 90%),则通过邮件提醒管理员。

5. 定时任务与调度

在运维工作中,定时任务非常常见,Shell 脚本与 Linux 的定时任务工具 cron 配合使用,可以自动定期执行脚本。

示例:使用 cron 定时执行备份脚本

假设你已经写好了一个备份脚本 /home/admin/backup.sh,并希望它每天凌晨 1 点执行一次。可以通过以下步骤设置 cron 任务:

crontab -e

在 crontab 文件中添加以下内容:

0 1 * * * /bin/bash /home/admin/backup.sh

这行表示每天凌晨 1 点运行 /home/admin/backup.sh 脚本。

6. 日志分析与处理

运维工程师经常需要分析大量的日志文件(如 Apache/Nginx 日志、系统日志、应用程序日志等),Shell 脚本提供了强大的文本处理能力,能够提取关键信息并生成报告或发送警报。

示例:分析 Apache 日志中的错误
# 检查 Apache 错误日志
LOG_FILE="/var/log/apache2/error.log"
ERROR_LOG="/var/log/apache2/error_report.txt"

# 查找错误日志中包含 "error" 的行,并输出到报告文件
grep "error" $LOG_FILE > $ERROR_LOG

# 发送报告邮件
mail -s "Apache Error Log Report" admin@example.com < $ERROR_LOG

这个脚本会分析 Apache 错误日志,提取包含“error”关键字的行,并将结果保存到报告文件中,再将报告通过邮件发送给管理员。

7. 故障排除与修复

Shell 脚本在故障排除中同样发挥重要作用。在系统出现故障时,运维工程师可以编写脚本自动检测系统状态、排除常见问题,甚至在某些情况下直接执行修复操作。

示例:检查并重启 Apache 服务
# 检查 Apache 服务状态,如果未运行,则重启
SERVICE="apache2"
STATUS=$(systemctl is-active $SERVICE)

if [ "$STATUS" != "active" ]; then
  echo "$SERVICE is down. Restarting..."
  systemctl restart $SERVICE
  echo "$SERVICE has been restarted." | mail -s "$SERVICE restart notification" admin@example.com
else
  echo "$SERVICE is running normally."
fi

这个脚本会检查 Apache 服务是否处于运行状态,如果没有运行则尝试重启,并通过邮件通知管理员。

8. 安全运维

运维工程师需要确保系统的安全,Shell 脚本可以用于检测和修复系统中的安全问题。例如,检查不安全的用户配置、密码策略、权限问题等。

示例:检查弱密码用户

#!/bin/bash
# 检查系统中是否存在弱密码用户(如空密码)
for user in $(cut -d: -f1 /etc/passwd); do
  PASSWORD=$(sudo grep "^$user" /etc/shadow | cut -d: -f2)
  if [ -z "$PASSWORD" ]; then
    echo "User $user has no password set!" | mail -s "Weak password detected" admin@example.com
  fi
done

这个脚本会检查系统中所有用户的密码,发现空密码用户时会发送警报。

总结:Shell 编程在系统运维中的核心作用

Shell 编程对系统运维工程师来说是一项非常重要的技能,它能够帮助你:

  • 自动化重复性工作,提高工作效率。
  • 处理和分析系统日志,快速识别问题。
  • 批量管理和配置服务器,节省时间并减少人为错误。
  • 定期监控系统健康状态,及时发现潜在问题。
  • 故障排除与修复,自动化恢复系统服务。
  • 增强系统安全性,通过脚本自动化检查和修复安全漏洞。

一,变量

变量是存储数据的容器,用于在脚本中传递信息、操作数据等。根据其作用范围和使用场景,Shell 中的变量可以分为 两种主要类型

1. 环境变量(Environment Variables)

环境变量是影响系统或程序行为的全局变量。它们通常用于存储操作系统、应用程序、或者 Shell 的配置信息。环境变量不仅在当前 Shell 中有效,而且在启动该 Shell 的所有子进程中都有效。

环境变量的特点:

  • 环境变量是全局有效的。
  • 通常由操作系统或程序自动设置,用户也可以自定义。
  • 它们通常用于配置系统或用户的行为,如 $PATH、$HOME、$USER 等。

常见的环境变量:

  • $HOME:当前用户的家目录路径。
  • $USER:当前用户的用户名。
  • $PATH:系统查找可执行文件的路径列表。
  • $SHELL:当前 Shell 的路径,例如 /bin/bash。

设置和查看环境变量:

  • 设置环境变量
    export VAR_NAME="value"
    例如,设置环境变量 MY_VAR:
    export MY_VAR="Hello, World!"
  • 查看环境变量
    echo $MY_VAR
  • 查看所有环境变量
    printenv

环境变量的作用:

环境变量对系统或应用程序的行为至关重要。例如,$PATH 变量决定了 Shell 如何查找可执行文件,当你在命令行输入一个命令时,系统会按照 $PATH 中的目录顺序查找该命令对应的文件。

2. 局部变量(Local Variables)

局部变量是仅在当前 Shell 或脚本的作用域内有效的变量。它们的生命周期仅限于脚本执行期间,脚本执行结束后,这些变量会被销毁。局部变量通常用于存储脚本中的临时数据或计算结果。

局部变量的特点:

  • 局部变量只能在当前 Shell 会话或者脚本中访问。
  • 它们不会影响到其他 Shell 进程或脚本的执行。
  • 局部变量不需要使用 export 来设置。

设置局部变量:

  • 设置局部变量
    VAR_NAME="value"
    例如,设置局部变量 MY_VAR:
    MY_VAR="Hello, World!"
  • 查看局部变量
    echo $MY_VAR

局部变量的作用:

局部变量通常用于保存临时数据、脚本参数、计算结果等。例如,在一个脚本中,你可能需要将某些计算结果存储在变量中,并在脚本结束后释放这些变量。

局部变量与环境变量的区别

特点

环境变量

局部变量

作用范围

全局有效,影响子进程。

仅在当前 Shell 或脚本中有效。

设置方式

使用 export 命令导出,例如 export VAR=value。

直接设置变量名和值,例如 VAR=value。

常见用途

配置系统、应用程序或 Shell 行为。

存储脚本中的临时数据或计算结果。

生命周期

直到 Shell 会话结束,或者被显式修改或删除。

仅在当前脚本或命令会话中有效,执行结束后失效。

影响范围

可以影响所有子进程及 Shell 会话。

只在当前 Shell 会话或脚本内部有效。

实例说明:

1. 环境变量示例

#!/bin/bash
# 设置环境变量
export MY_PATH="/usr/local/bin"

# 查看环境变量
echo "The PATH is: $MY_PATH"

这个脚本中,MY_PATH 是一个环境变量,export 使得它在当前 Shell 会话和任何子进程中都有效。

2. 局部变量示例

#!/bin/bash
# 设置局部变量
MY_VAR="Hello, Shell!"

# 查看局部变量
echo "Message: $MY_VAR"

在这个脚本中,MY_VAR 是一个局部变量,只有在当前脚本运行时有效,脚本执行结束后它就会消失。

3. 环境变量与局部变量的混合使用

#!/bin/bash
# 设置环境变量
export HOME_DIR="/home/user"

# 设置局部变量
FILE_PATH="$HOME_DIR/data/file.txt"

echo "Home Directory: $HOME_DIR"
echo "File Path: $FILE_PATH"

这个脚本中,HOME_DIR 是环境变量,可以在其他 Shell 会话或脚本中使用。而 FILE_PATH 是局部变量,仅在当前脚本中有效。

总结

  • 环境变量:全局有效,影响当前 Shell 会话及其子进程,通常用于系统配置和用户信息。
  • 局部变量:仅在当前 Shell 会话或脚本中有效,适用于存储脚本中的临时数据。

二,变量应用实例

1,将系统时间输入到变量

2,将/etc/passwd文件进行备份,存储在/tmp下并且以当前时间作为后缀名

cp /etc/passwd /tmp/passwd_$(date +%F_%R)

ls /tmp/

案例一,利用脚本创建文件和文件夹

1,编写脚本 vim file.sh

#!/bin/bash

#touch mkdir

touch 1.txt

mkdir /root/test1

ls /root

2,给脚本赋予执行权限,然后执行

file.sh文件属主读写执行权限,属组执行权限,其他人读执行权限

案例二,编写shell脚本用于创建user1用户,并且设置密码123456

1,编写脚本 vim user.sh

#!/bin/bash

useradd user1 

echo "user1:123456" | chpasswd

#echo 123456 | passwd --stdin user1 &> /dev/null

echo "用户 user1 创建成功,密码已设置为 123456"

2,给执行权限再执行

3,验证实验效果

三,引用与转义

单引号(引用)

单引号用于将字符串中的所有字符都作为普通字符处理,不会解析其中的特殊字符。例如:

array=10
echo '$array' 
# 输出: $array

在上面的例子中,$array 被单引号括起来,因此 $ 符号不会被解释为变量的前缀,而是作为普通的字符输出

双引号(弱引用)

双引号允许字符串中的大多数字符被解释为普通字符,但会解析一些特殊字符,如 $、反引号和转义符。例如:

array=10
echo "$array" 
# 输出: 10

在这个例子中,双引号内的 $array 被解析为变量 array 的值,即 10

转义

转义是指使用转义符(通常是反斜杠 \)来改变紧随其后的字符的含义。在Shell中,转义符可以使特殊字符失去其特殊含义,而仅作为普通字符处理。例如:

echo \$Dollar  # 输出: $Dollar

在这个例子中,$ 符号前面有一个反斜杠 \,因此 $ 符号被当作普通字符输出,而不是被解释为变量的前缀

四,shell脚本实现四则运算

1,编写脚本 vim  calc.sh

#!/bin/bash

#test1

read -p "please input two numbers:" x y

echo $x + $y = $(expr $x + $y)

echo $x - $y = $(expr $x - $y)

echo $x \* $y = $(expr $x \* $y)

echo $x / $y = $(expr $x / $y)

2,给权限执行 chmod u+x calc.sh

五,无执行权限脚本执行

使用bash执行脚本(使用bash -x 显示脚本执行过程)

bash 1.sh

使用source执行脚本

source 1.sh

六,条件测试概述

在Shell编程中,条件测试用于判断某个条件是否为真。条件测试的结果通常用于控制程序的流程,例如决定是否执行某个命令或代码块。Shell提供了多种条件测试方式,包括文件测试、字符串比较、数值比较等。

文件测试

文件测试用于检查文件或目录的属性。常用的文件测试操作符包括:

  • -e FILE:检查文件是否存在。
  • -f FILE:检查文件是否存在且为普通文件。
  • -d DIR:检查目录是否存在。
  • -r FILE:检查文件是否可读。
  • -w FILE:检查文件是否可写。
  • -x FILE:检查文件是否可执行。
  • -s FILE:检查文件是否存在且大小大于0。

示例:

if [ -e "#测试文件的正确路径" ]; then
    echo "File exists."
else
    echo "File does not exist."
fi

数值比较

数值比较用于比较两个数值的大小。常用的数值比较操作符包括:

  • -eq:检查两个数值是否相等。
  • -ne:检查两个数值是否不相等。
  • -lt:检查第一个数值是否小于第二个数值。
  • -le:检查第一个数值是否小于或等于第二个数值。
  • -gt:检查第一个数值是否大于第二个数值。
  • -ge:检查第一个数值是否大于或等于第二个数值。

示例:

read -p "Please enter your num1: " num1

read -p "Please enter your num2: " num2
if [ "$num1" -lt "$num2" ]; then
    echo "num1 is less than num2."
else
    echo "num1 is not less than num2."
fi

代码示例

以下是一个简单的Shell脚本示例,展示了如何根据分数判断ABCD四个等级:

#!/bin/bash
# 获取用户输入的分数
read -p "请输入分数: " score
 

# 根据分数判断等级
if (( score >= 90 )); then
    echo "等级: A"
elif (( score >= 80 )); then
    echo "等级: B"
elif (( score >= 70 )); then
    echo "等级: C"
elif (( score >= 60 )); then
    echo "等级: D"
else
    echo "等级: F"
fi

解释

  1. 获取用户输入:使用read命令获取用户输入的分数。
  2. 条件判断
    • 如果分数大于等于90,输出“等级: A”。
    • 如果分数大于等于80且小于90,输出“等级: B”。
    • 如果分数大于等于70且小于80,输出“等级: C”。
    • 如果分数大于等于60且小于70,输出“等级: D”。
    • 如果分数小于60,输出“等级: F”。
  3. 输出结果:根据条件判断的结果,输出对应的等级。

实例练习

单分支:

1、编写一个 Shell 脚本,如果系统中安装了 httpd 软件,则输出 “httpd 已安装”。

#!/bin/bash

# 检查 httpd 是否安装

if command -v httpd &> /dev/null; then

    echo "httpd 已安装"

else

    echo "httpd 未安装"

fi

2、编写一个 Shell 脚本,判断当前系统时间是否在 9 点到 18 点之间,如果在则输出 “当前处于工作时间”。

#!/bin/bash

# 获取当前小时

current_hour=$(date +"%H")

# 判断当前时间是否在 9 点到 18 点之间

if [ "$current_hour" -ge 9 ] && [ "$current_hour" -lt 18 ]; then

    echo "当前处于工作时间"

else

    echo "当前不处于工作时间"

fi

双分支

1、编写一个 Shell 脚本,提示用户输入一个数字,然后判断该数字是正数还是负数,并分别输出相应的结果。

#!/bin/bash

# 提示用户输入一个数字

echo "请输入一个数字:"

read number

# 判断数字是正数还是负数

if [ $number -gt 0 ]; then

    echo "该数字是正数"

elif [ $number -lt 0 ]; then

    echo "该数字是负数"

else

    echo "该数字是零"

fi

2,编写一个 Shell 脚本,接受一个文件路径作为参数,判断该文件是否具有可执行权限,如果有则输出 “该文件具有可执行权限”,否则输出 “该文件没有可执行权限”。

#!/bin/bash

# 检查参数数量

if [ "$#" -ne 1 ]; then

    echo "使用方法: $0 <文件路径>"

    exit 1

fi

# 获取文件路径

FILE_PATH=$1

# 检查文件是否存在

if [ ! -e "$FILE_PATH" ]; then

    echo "错误: 文件 $FILE_PATH 不存在"

    exit 1

fi

# 检查文件是否具有可执行权限

if [ -x "$FILE_PATH" ]; then

    echo "该文件具有可执行权限"

else

    echo "该文件没有可执行权限"

fi

3、编写一个 Shell 脚本,接受两个整数作为参数,判断第一个数是否大于第二个数,如果是则输出 “第一个数大于第二个数”,否则输出 “第一个数小于等于第二个数”。

#!/bin/bash

# 检查参数数量是否正确

if [ "$#" -ne 2 ]; then

    echo "用法: $0 <整数1> <整数2>"

    exit 1

fi

# 获取两个参数

num1=$1

num2=$2

# 判断第一个数是否大于第二个数

if [ "$num1" -gt "$num2" ]; then

    echo "第一个数大于第二个数"

else

    echo "第一个数小于等于第二个数"

fi

多分支

1、编写一个 Shell 脚本,接受一个月份数字作为参数,根据月份判断所属季节并输出(3、4、5 月为春季,6、7、8 月为夏季,9、10、11 月为秋季,12、1、2 月为冬季)。

#!/bin/bash

# 检查参数数量

if [ "$#" -ne 1 ]; then

    echo "Usage: $0 <month_number>"

    exit 1

fi

# 获取月份参数

month=$1

# 根据月份判断季节

case $month in

    3|4|5)

        echo "春季"

        ;;

    6|7|8)

        echo "夏季"

        ;;

    9|10|11)

        echo "秋季"

        ;;

    12|1|2)

        echo "冬季"

        ;;

    *)

        echo "无效的月份数字"

        exit 1

        ;;

esac

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

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

相关文章

怎么自己创建一个网站? 开发语言首选 java,使用CMS网站内容管理系统是不错的选择

怎么自己创建一个网站 推荐使用 Java CMS 网站内容管理系统&#xff0c;根据网站规划的功能模块&#xff0c;创建不同的页面风格&#xff1b; 文章目录 怎么自己创建一个网站一、规划网站1.1确定网站主题和目的1.2规划网站结构和内容 二、注册域名2.1选择域名注册商2.2 查找并…

小米澎湃OS2跟蜂窝网络相关的设置和调试【功能设计】

界面功能 开发者模式下&#xff0c;支持数据和WLAN网络相关的设置&#xff0c;跟数据有关的主要如下&#xff1a; 蜂窝网络调试 > 5G-A 特性中心始终开启移动数据网络&#xff08;便于WiFi和数据快速切换&#xff0c;在国外北美运营商有些需求中明确定义要开着&#xff09…

八、Python —— 类、异常处理、模块、包的管理、虚拟环境

文章目录 一、类1.1、类的定义1.2、类变量和实例变量1.3、类的继承 二、异常处理三、模块 和 包3.1、模块和包的概念&#xff0c;以及项目的树形结构3.2、模块和包的使用 (from import)方法一&#xff1a;from 模块 import 变量/函数/类方式二&#xff1a;from 模块 import 变量…

【text2sql】低资源场景下Text2SQL方法

SFT使模型能够遵循输入指令并根据预定义模板进行思考和响应。如上图&#xff0c;、 和 是用于通知模型在推理过程中响应角色的角色标签。 后面的内容表示模型需要遵循的指令&#xff0c;而 后面的内容传达了当前用户对模型的需求。 后面的内容代表模型的预期输出&#xff0c;也…

自适应神经网络架构:原理解析与代码示例

个人主页&#xff1a;chian-ocean 文章专栏 自适应神经网络结构&#xff1a;深入探讨与代码实现 1. 引言 随着深度学习的不断发展&#xff0c;传统神经网络模型在处理复杂任务时的局限性逐渐显现。固定的网络结构和参数对于动态变化的环境和多样化的数据往往难以适应&#…

挑战用React封装100个组件【004】

项目地址 https://github.com/hismeyy/react-component-100 组件描述 组件适用于展示图片的地方&#xff0c;提供了small&#xff0c;medium&#xff0c;large三种大小。可以删除图片&#xff0c;也可以全屏预览图片。 样式展示 前置依赖 今天我们的这个挑战需要用用到了…

基于MobileNet深度学习网络的MQAM调制类型识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…

如何使用apache部署若依前后端分离项目

本章教程介绍,如何在apache上部署若依前后端分离项目 一、教程说明 本章教程,不介绍如何启动后端以及安装数据库等步骤,着重介绍apache的反向代理如何配置。 参考此教程,默认你已经完成了若依后端服务的启动步骤。 前端打包命令使用以下命令进行打包之后会生成一个dist目录…

标贝科技受邀出席2024东湖国际人工智能高峰论坛并入选数据要素合作伙伴名单

近日&#xff0c;备受瞩目的2024东湖国际人工智能高峰论坛在中国光谷科技会展中心隆重召开。会议以“智联世界&#xff0c;共创未来”为主题&#xff0c;省市相关单位、专家学者、产学研各界百余家联合体单位齐聚一堂&#xff0c;共话人工智能领域的最新技术及产业发展趋势。会…

QGIS Python插件开发环境搭建--QGIS3.34.11+PyCharm

QGIS Python插件开发环境搭建--QGIS3.34.11PyCharm 安装QGIS启动QGIS并设置为中文启动QGIS Python插件开发中用到的插件安装PyCharm社区版使用Plugin Builder 3生成插件模板加载插件打开QGIS插件路径将自己的插件拷贝到QGIS的python插件路径 使用PyCharm打开插件代码配置Python…

On-Chip-Network之router微架构的物理实现

Low-Power Microarchitecture 自20世纪90年代以来&#xff0c;功耗一直是嵌入式芯片和高性能芯片面临的一个挑战。自2000年代中期以来&#xff0c;它已经成为大多数设计的主要约束。多核解决了功耗问题&#xff0c;由此产生的communication substrate&#xff0c;namely the on…

java 21 多线程

1.相关概念 进程: 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存空间。当我们使用迅雷&#xff0c;又启动了一个进程&#xff0c;操作系统将为迅雷配新的内存空间。 进程是程序的一次执行过程&#…

Envoy-istio

最近研究envoy-istio&#xff0c;发现这个博客&#xff0c;觉得很不错&#xff0c;这里记录一下 envoy-istio介绍 envoy-istio - 随笔分类 - yaowx - 博客园 envoy部分七&#xff1a;envoy的http流量管理基础 envoy部分六&#xff1a;envoy的集群管理 envoy部分五&#xff…

【ETCD】ETCD用户密码认证

目录 概述 特殊用户和角色 root用户 root角色 用户操作 角色操作 启用身份验证 使用etcdctl进行身份验证 使用TLS通用名称 概述 etcd 2.1中增加了身份验证功能。etcd v3 API对身份验证功能的API和用户界面进行了轻微修改&#xff0c;以更好地适应新的数据模型。本指南…

蓝牙定位的MATLAB程序,四个锚点、三维空间

这段代码通过RSSI信号强度实现了在三维空间中的蓝牙定位&#xff0c;展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。代码涉及信号衰减模型、距离计算和最小二乘法估计等基本概念&#xff0c;并通过三维可视化展示了真实位置与估计位置的关系。 目录 程序描述 运…

【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN

实验 4&#xff1a;生成树协议STP的功能以及虚拟局域网VLAN 一、 实验目的 加深对生成树协议STP的功能的理解。 了解虚拟局域网VLAN。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证交换机生成树协议STP的功能 (1) 第一步&#xff1a;构建网络拓…

VMware官网下载

访问官网 https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion 跳转到broadcom 注册 -> 登录 拉到下面 选择版本 然后填写地址信息&#xff0c; 随便写写&#xff0c; 再回去点下载按钮&#xff0c; 就可以下载了

智慧地图聚合(LockMap)标注系统开发说明文档

智慧地图聚合(LockMap)标注系统开发说明文档 1. 系统概述 智慧地图聚合(LockMap)标注系统是一个专为处理大规模地理信息数据而设计的综合解决方案。通过后端高效的数据管理和前端直观的地图展示&#xff0c;该系统能够实现对海量地理位置点的有效可视化。本项目旨在提供一个用…

【大数据学习 | Spark-SQL】定义UDF和DUAF,UDTF函数

1. UDF函数&#xff08;用户自定义函数&#xff09; 一般指的是用户自己定义的单行函数。一进一出&#xff0c;函数接受的是一行中的一个或者多个字段值&#xff0c;返回一个值。比如MySQL中的&#xff0c;日期相关的dateDiff函数&#xff0c;字符串相关的substring函数。 先…

linux 服务器 一次性查看 CPU、内存和磁盘使用情况

创建 vi check_usage.sh #!/bin/bashecho " CPU 使用率 " mpstat -P ALL 1 1echo -e "\n 内存使用情况 " free -hecho -e "\n 磁盘使用率 " df -h执行授权 chmod x check_usage.sh执行查看 ./check_usage.sh这样可以快速获取系统资源的概览。…