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

LiangGaRy-学习笔记-Day12

1、作业回顾

1.1、判断磁盘利用率

要求:

  • 判断磁盘的使用率,如果超过了90%就警告
[root@Node1 sh]# vim disk_check.sh
#!/bin/bash
#Author By LiangGaRy
#2023年5月9日
#Usage:检测硬盘的使用率
###########################################
#定义一个基础值,就是用于判断硬盘是否超过某个值90
thred=90#这里awk后面跟了一个int,表示可以提取数值;
for i in `df -h |awk '{print int($5)}'`
do#然后就进行比较,和90的基础知识比较;if [ $i -gt $thred ];thenecho  "warnning"elseecho "It is ok"fi
done

这里可以考虑优化:

  • 优化的方向:
    • 1.它没有显示那个地方是ok的,比如说是/的占用率是ok的;
    • 要实现这个功能,我们可以考虑awk在打印前面的内容;

2.2、解压文件脚本

要求:

  • 写一个解压的脚本;
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")function extract {if [ -z "$1" ]; then# display usage if no parameters givenecho "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"echo "       extract <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"elsefor n in "$@"doif [ -f "$n" ] ; thencase "${n%,}" in*.cbt|*.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar) tar xvf "$n"       ;;*.lzma)      unlzma ./"$n"      ;;*.bz2)       bunzip2 ./"$n"     ;;*.cbr|*.rar)       unrar x -ad ./"$n" ;;*.gz)        gunzip ./"$n"      ;;*.cbz|*.epub|*.zip)       unzip ./"$n"       ;;*.z)         uncompress ./"$n"  ;;*.7z|*.arj|*.cab|*.cb7|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.pkg|*.rpm|*.udf|*.wim|*.xar)7z x ./"$n"        ;;*.xz)        unxz ./"$n"        ;;*.exe)       cabextract ./"$n"  ;;*.cpio)      cpio -id < ./"$n"  ;;*.cba|*.ace)      unace x ./"$n"      ;;*)echo "extract: '$n' - unknown archive method"return 1;;esacelseecho "'$n' - file does not exist"return 1fidone
fi
}
IFS=$SAVEIFS

2、编写IP是否在线脚本

要求:

  • 函数:
    • ping ip是否在线
  • 一次性出现结果
  • 显示:
    • 当前在线的IP个数为
    • 当前不在线的个数:

2.1、ip检测脚本v1

按照要求编写一个ip检测的脚本

  • 定义一个 网段,然后输出到显示屏幕
#这个是第一个脚本-->这里仅仅是显示了当年前IP是否在线
[root@Node1 sh]# vim ip_check_v1.sh
#!/bin/bash 
#2023年5月10日
#Author By LiangGaRy
#Usage:检测IP是否存活
##########################
#定义一个网段
str="192.168.75."
for i in {1..25}
doip=${str}${i}ping -c1 -w1 ${ip} &>/dev/nullif [ $? -eq 0 ];thenecho "${ip}  is  online"elseecho "${ip}  is offline"fi
done#执行脚本查看
[root@Node1 sh]# bash ip_check_v1.sh 
192.168.75.1  is  online
192.168.75.2  is  online
192.168.75.3  is offline
..............

明显第一个版本的脚本是不够完善

  • ip都输出到屏幕;
  • 并没有归总并且显示给用户看
  • 于是就到了V2版本的

2.2、ip检测脚本v2

优化方向:

  • 把输出的脚本追加到一个文件当中;
  • 然后统计文件的个数得出在线IP数
#改进版本-->输出一个数值
[root@Node1 sh]# vim  ip_check_v2.sh 
#!/bin/bash 
#2023年5月10日
#Author By LiangGaRy
#Usage:检测IP是否存活
##########################
str="192.168.75."
for i in {1..25}
doip=${str}${i}ping -c1 -w1 ${ip} &>/dev/nullif [ $? -eq 0 ];thenecho "${ip}  is  online"echo ${ip} >> /root/online.txtelseecho "${ip}  is offline"echo ${ip} >> /root/offline.txtfi
done
online=`cat /root/online.txt | wc -l`
offline=`cat /root/offline.txt | wc -l`
echo "目前在线的IP总数为 ${online}"
echo "目前不在线的IP总数为${offline}"#检测脚本
[root@Node1 sh]# bash ip_check_v2.sh 
.................
目前在线的IP总数为 2
目前不在线的IP总数为23

这里又发现有问题

  • 如果脚本执行两次,则统计出来的数据会不准确
  • 假设文件之前就被编辑过有空格统计出来也是有问题;
  • 于是就继续编写v3版本的脚本

2.3、ip检测脚本v3

考虑优化:

  • 如果一开始就有空行怎么说?在一开始的时候就清空文件
  • 如果统计的命令换成排除空格就能解决问题
#第三次修改-->这里考虑到会有重复,因此在执行前就考虑文件
[root@Node1 sh]# vim ip_check_v3.sh 
#!/bin/bash 
#2023年5月10日
#Author By LiangGaRy
#Usage:检测IP是否存活
##########################
#一开始就选择清空两个文件
> /root/online.txt
> /root/offline.txt
str="192.168.75."
for i in {1..25}
doip=${str}${i}ping -c1 -w1 ${ip} &>/dev/nullif [ $? -eq 0 ];thenecho "${ip}  is  online"echo ${ip} >> /root/online.txtelseecho "${ip}  is offline"echo ${ip} >> /root/offline.txtfi
done#这里把命令换成了grep命令
online=`grep -v ^$ /root/online.txt | wc -l`
offline=`grep -v ^$ /root/offline.txt | wc -l`
echo "目前在线的IP总数为 ${online}"
echo "目前不在线的IP总数为${offline}"#执行查看
[root@Node1 sh]# bash ip_check_v3.sh 
.................
目前在线的IP总数为 2
目前不在线的IP总数为23

总结:

  • 脚本的实现不是一次就好了的,需要不断地更新优化;不断地优化才最后得出

2.4、sort命令讲解

作用:sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出

语法:sort + 选项 + 文件

选项:

  • -c:检查文件是否按照顺序进行排序
  • -d:排序时,处理英文字母,数字及空格字母外,忽略其他字符
  • -f:排序,将小写字母视为大写字母
  • -M:将前面的3个字母依照月份缩写进行排序
  • -r:以相反的顺序进行排序
  • -n:依照数值的大小进行排序-
  • -o:排序后存入指定的文件
  • -t:指定一个用来区分键位置字符
  • -k:后面跟数字,指定按第几列进行排序
#如果不加参数-->直接默认按照首字母排序
[root@Node1 sh]# sort  /etc/passwd | head -3
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin#倒序排列
[root@Node1 sh]# sort -r /etc/passwd |head -3
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin#-t指定分隔符的位置,-k 指定按第几列进行排序 -r 是倒叙#查看文件-->然后指定分隔符为:,按照第三列信息倒叙排列
[root@Node1 ~]# cat passwd  | sort -t ":" -k 3 -r | head -3
nobody:x:99:99:Nobody:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin#sort还有去重功能#准备一个模板文件
[root@Node1 ~]# vim aa.txt
aa
bb
cc
aa
bb#去重-u
[root@Node1 ~]# sort  -u aa.txt aa
bb
cc#按照数值的方式排序-->sort命令默认会觉得10 比2 小#准备素材
[root@Node1 ~]# vim aa.txt 
1
2
3
10
20#然后按照数值大小排序-->如果不带参数
[root@Node1 ~]# sort aa.txt 
1
10
2
20
3#带上参数n
[root@Node1 ~]# sort  -n aa.txt 
1
2
3
10
20#忽略空白字符
[root@Node1 ~]# sort  -b -n aa.txt 
1
2
3
10
20#合并文件
[root@Node1 ~]# sort  -m aa.txt bb.txt 
1
2
3
10
20
aa 
bbcc#结合-o可以重定向到一个文件当中
[root@Node1 ~]# sort  -m aa.txt bb.txt -o cc.txt
[root@Node1 ~]# cat cc.txt 
1
2
3
10
20
aa 
bbcc

2.5、Linux 内核参数说明

  • console=tty0:用来指定 Linux 内核启动时使用的控制台设备
  • crashkernel=384:这是指在 Linux 内核启动时,预留 384MB 的内存作为用于系统崩溃时的内存转储(crash dump)
  • l1tf=off :“L1TF"代表"级联缓存失效”,是一种针对Intel处理器的漏洞,可以让攻击者访问系统中的敏感信息
  • nospec_store_bypass_disable:nospec_store_bypass_disable 是 Linux 内核中的一个安全补丁,用于防止 Spectre 攻击。
  • rootdelay=10 :rootdelay=10 是在 Linux 内核启动时传递给内核的一个参数,它的作用是指定根文件系统的延迟时间
  • fsck.repair=yes:fsck.repair=yes 是 Linux 文件系统检查(fsck)命令的一个选项。当这个选项被设置为 yes 时,fsck 会在检查文件系统时自动修复发现的错误。
  • net.ifnames=0:net.ifnames=0 是 Linux 内核启动参数之一,用于禁用网络接口的动态命名。
  • rootwait:rootwait是一个内核启动参数,它告诉内核等待根文件系统可用后再启动系统。当内核启动时,它需要挂载根文件系统来启动系统
  • iommu=ptpti=off:IOMMU 相关的选项
  • spectre_v2=off:用于禁用针对 Spectre 漏洞的特定修复
  • mitigations=off:用于关闭一些内核的安全补丁和保护措施。
  • no_stf_barrier:用于禁用同步线程的强制屏障
  • biosdevname=0:用于控制 BIOS 设备名称的生成。
  • console=ttyS0,115200 :指定了 Linux 内核将控制台输出重定向到串口 ttyS0,并且设置了波特率为 115200。
  • fsck.mode=force:制运行 fsck 工具来检查文件系统,

3、prometheus安装

3.1、prometheus介绍

简介:

  • prometheus是一个监控服务
  • 支持数据采集
    • 数据存储(数据库、文本)
    • 数据分析
    • 数据展示:shell+ grafana
    • 支持数据告警–>钉钉、邮件等方式
    • 监控CPU 内存、网络、磁盘、数据等等

zabbix和prometheus都是一款监控服务;

3.2、prometheus安装

使用源码包安装方式

  • 准备源码包
  • 解压包
  • 安装包
  • prometheus安装完成后,不需要任何配置都可以支持页面展示
#准备好prometheus的包
[root@Node1 ~]# cd /usr/local/src/
[root@Node1 src]# ls prometheus-2.37.1.linux-amd64.tar.gz 
prometheus-2.37.1.linux-amd64.tar.gz#解压源码包
[root@Node1 src]# tar -xf prometheus-2.37.1.linux-amd64.tar.gz 
[root@Node1 src]# mv prometheus-2.37.1.linux-amd64 /root/prometheus
[root@Node1 src]# cd /root/prometheus/#查看一下内容
[root@Node1 prometheus]# ls 
console_libraries  LICENSE  prometheus      promtool
consoles           NOTICE   prometheus.yml#直接启动
[root@Node1 prometheus]# ./prometheus  &#查看版本号
[root@Node1 prometheus]# ./prometheus --version
prometheus, version 2.37.1 (branch: HEAD, revision: 1ce2197e7f9e95089bfb95cb61762b5a89a8c0da)build user:       root@3caaaea7ba87build date:       20220912-12:42:39go version:       go1.18.6platform:         linux/amd64#查看prometheus支持什么命令
[root@Node1 prometheus]# ./prometheus --help#并且可以统计
[root@Node1 prometheus]# ./prometheus --help | wc -l
163#查看9090端口可以看到默认的端口
[root@Node1 prometheus]# ./prometheus --help | grep 9090--web.listen-address="0.0.0.0:9090"  
#然后直接更变端口启动
[root@Node1 prometheus]# ./prometheus --web.listen-address="0.0.0.0:888"

浏览器直接访问

  • prometheus默认的端口号就是9090
  • 浏览器访问:http://192.168.75.131:9090/

Linxu当中,如果修改配置文件

  • 给一个变量赋值
  • 重启服务后重新加载配置文件等于重新制定了文件的inode号
#查看一个文件i号
[root@Node1 prometheus]# ls -i prometheus.yml 
34623586 prometheus.yml#修改配置文件后
[root@Node1 prometheus]# vim  prometheus.yml 
# my global config
..........static_configs:- targets: ["localhost:888"]#再次查看
[root@Node1 prometheus]# ls -i prometheus.yml 
34623594 prometheus.yml

相关文章:

LiangGaRy-学习笔记-Day12

1、作业回顾 1.1、判断磁盘利用率 要求&#xff1a; 判断磁盘的使用率&#xff0c;如果超过了90%就警告 [rootNode1 sh]# vim disk_check.sh #!/bin/bash #Author By LiangGaRy #2023年5月9日 #Usage:检测硬盘的使用率 ########################################### #定义一…...

LayUI中弹出层select动态回显设置及子页面刷新父页面Table数据方法

...

浅谈Hutool工具类

一、Hutool简介 Hutool是一个Java工具类库&#xff0c;它封装了很多常用的Java工具类&#xff0c;如加密解密、文件操作、日期时间处理、Http客户端等。它的目标是让Java开发变得更加简单、高效。 二、Hutool的特点 高效&#xff1a;提供了很多高效的工具类和方法。 简单&…...

Mac终端代理

1.打开代理查看代理端口号 打开设置&#xff0c;点击网络&#xff0c;点击详细信息&#xff0c;点击代理查看代理端口号。 2.修改环境变量 1&#xff09;终端输入下面命令 vim .zshrc 2&#xff09;在.zshrc文件里添加下面两段内容&#xff08;注意&#xff1a;7980为端口号…...

Git Clone 报错 `SSL certificate problem: unable to get local issuer certificate`

如果您在尝试克隆Git存储库时得到 “SSL certificate problem: unable to get local issuer certificate” 的错误,这意味着Git无法验证远程存储库的SSL证书。如果SSL证书是自签名的&#xff0c;或者SSL证书链有问题&#xff0c;就会发生这种情况。 $ git clone https://githu…...

第八章 文件与异常

引言 码字不易&#xff0c;如果这篇文章对您有帮助的话&#xff0c;希望您能点赞、收藏、加关注&#xff01;您的鼓励就是我前进的动力&#xff01; 目录 一、读取文件&#xff08;一&#xff09;读取文件&#xff1a;open(), with, read()&#xff08;二&#xff09;文件路径…...

Gradle使用

下载Gradle Gradle Distributions 配置环境变量 测试是否成功 cmd输入gradle -v 在.gradle目录下创建一个init.gradle allprojects { repositories { maven { url file:///D:/maven/myRepository} ## 这里是本地maven仓库地址,没有就会依次向下设置的地址寻…...

从七个方面聊聊Linux到底强在哪

从事计算机相关行业的同学不难发现&#xff0c;身边总有一些朋友在学习linux&#xff0c;有的开发同学甚至自己的电脑就是它。经常听他们说linux如何好用等等。那么linux到底好在那里&#xff0c;能让大家如此喜欢。这也是我经常问自己的一个问题。下面我将通过以下七点来为大家…...

python读写json文件方法详解

在我们日常使用 Python时&#xff0c;经常会使用到 json文件。那么在平时写一些小程序时&#xff0c;如何使用 json文件呢&#xff1f;今天我将介绍如何读取和写入 Json文件。 json是一种数据结构&#xff0c;它是将字符串转换成数据的一种技术。使用 json可以非常方便的将一组…...

多处最优服务次序问题——算法设计与分析(C实现)

问题描述&#xff1a;设有n个顾客同时等待一项服务。顾客i需要的服务时间为&#xff0c;共有s处可以提供此项服务。应该如何安排n个顾客的服务次序&#xff0c;才能使平均等待时间达到最小&#xff1f;平均等待时间是n个顾客的等待服务时间的总和除以n。 算法设计&#xff1a;对…...

2023 年 IntelliJ IDEA 下载安装教程,超详细图文教程,亲测可用

. IDEA 下载 1、打开浏览器输入https://www.jetbrains.com/&#xff0c;进入 Jetbrains官网&#xff0c;点击 Developer Tools&#xff0c;再点击 Intellij IDEA 2、点击中间的 Download&#xff0c;进入IDEA下载界面 3、选择左边的 Ultimate 版本进行下载安装。Ultimate 版…...

前端框架比较:Vue.js、React、AngularJS三者的优缺点和应用场景

章节一&#xff1a;引言 在当前的互联网开发中&#xff0c;前端框架已经成为了不可或缺的一部分。然而&#xff0c;前端框架如此之多&#xff0c;该如何选择呢&#xff1f;Vue.js、React和AngularJS是目前比较受欢迎的三个前端框架&#xff0c;它们各自有着不同的优缺点和应用…...

JavaScript中的数据可视化和动画效果

摘要&#xff1a; JavaScript是一种强大而灵活的编程语言&#xff0c;被广泛用于网页开发和交互设计。在数据可视化和动画效果方面&#xff0c;JavaScript提供了丰富的工具和库&#xff0c;使开发者能够创建出令人印象深刻的交互式数据可视化和动画效果。本文将介绍JavaScript中…...

如何搭建在线产品手册

在现代社会&#xff0c;随着科技的发展&#xff0c;越来越多的企业将目光投向互联网&#xff0c;并将自己的产品推向了线上。而对于这些线上产品&#xff0c;拥有一份完备的、易用、高质量的在线产品手册显得尤为重要。 那么如何才能搭建一份高质量且易用的在线产品手册呢&…...

Java版企业电子采购招标系统源码

一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编辑&#x…...

【操作系统复习】第6章 虚拟存储器 2

请求分页中的内存分配 在为进程分配物理块时&#xff0c;要解决下列的三个问题&#xff1a; 1. 保证进程可正常运行所需要的最少物理块数 2. 每个进程的物理块数&#xff0c;是固定值还是可变值&#xff08;分配策略&#xff09; 3. 不同进程所分配的物理块数&#xff…...

【OAI】OAI5G核心网VPP-UPF网元分析

文章目录 VPP_UPF_CONFIG_GENERATION.mdVPP UPF Configuration GenerationEnvironment variablesInterfacesInterface Configuration ExamplesCentral UPFA-UPFI-UPFUL CL FEATURE_SET.mdVPP_UPG_CLI参考文献 VPP_UPF_CONFIG_GENERATION.md VPP UPF Configuration Generation …...

【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器

&#x1f4ec;&#x1f4ec;我是上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货&#xff0c;欢迎关注。 介绍 Hadoop是一种开源的分布式处理框架&#xff0c;用于在一组低成本硬件的集群上存储和处理大规模数据集。Ambari是一种基…...

Day3--C高级3

一.编写一个名为myfirstshell.sh的脚本&#xff0c;它包括以下内容。 1、包含一段注释&#xff0c;列出您的姓名、脚本的名称和编写这个脚本的目的 2、和当前用户说“hello 用户名” 3、显示您的机器名 hostname 4、显示上一级目录中的所有文件的列表 5、显示变量PATH和HO…...

第9章 CURD操作与MemoryCache缓存的强制清理的实现

1 重构 Data.Repository<TEntity> using Core.Caching; using Core.Domain; using Core.Events; using Microsoft.EntityFrameworkCore; namespace Data { ///<typeparam name"TEntity">泛型类型实例(这里特指:1个指定实体的类型实例)。</typepa…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...