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

Linux(CentOS)运维脚本工具集合

使用说明

备份指定目录

# 备份指定目录文件到指定目录,备份文件名称为:备份目录最后一层目录+"_"+日期.tar.gz
# 第一个参数:backdir 第二参数:备份文件保存目录 第三个参数:备份目录/文件
sh script.sh backdir /root/ /home

查看CPU、磁盘、内存使用率

sh script.sh baseinfo

返回结果

2023-04-03 13:08:44 CPU usage: 0.0, Memory usage: 9.39%, Disk usage: 19%

显示基础信息-详细

sh script.sh info

查看进程pid,启动时间,持续执行时间

sh script.sh pstime 进程名/id

根据进程id查看工作目录

sh script.sh psdir 15008

清除Linux系统占用缓存

sh script.sh dropCache

查看端口是否使用

# 第一个参数脚本名称 ,第二个参数ip,第三个参数端口
sh scripte.sh pint-port

demo:

sh scripte.sh pint-port
> 端口 80 无法访问 127.0.0.1

查看进程使用的端口

sh scripte.sh processor-port 进程信息

demo

sh 1.sh processor-port 15008
-------------------------------------------------
所有进程ID:14746 14749 15008
-------------------------------------------------
进程ID:14746
进程 15008 没有占用任何端口。
-------------------------------------------------
进程ID:14749
进程 15008 没有占用任何端口。
-------------------------------------------------
进程ID:15008
进程 15008 占用的端口号:1234
12345
16798
25333
50052
5678
-------------------------------------------------

查看端口所在进程

sh scripte.sh processor-port 5678

demo

sh scripte.sh processor-port 5678
> 端口  对应的进程是 java,PID 是 15008。

查看目录下各目录占用空间以及最大文件或目录

 sh script.sh duh /var/lib

demo

# sh 1.sh duh /var/lib
28K     /var/lib/polkit-1
76K     /var/lib/systemd
692K    /var/lib/cloud
13M     /var/lib/yum
132M    /var/lib/rpm
25G     /var/lib
25G     /var/lib/clickhouse
占用存储空间最大的目录是:
25G     /var/lib/clickhouse

查看内存使用前十的进程

sh script.sh top-mem

查看CPU使用前十的进程

sh script.sh top-cpu

脚本内容

#!/bin/bash# 备份指定目录文件到指定目录,备份文件名称为:备份目录最后一层目录+"_"+日期.tar.gz
# 第一个参数:backdir 第二参数:备份文件保存目录 第三个参数:备份目录/文件
backdir(){# 备份文件保存目录BACKUP_DIR=`echo $2`# 备份目录SOURCE_DIR=`echo $3`FILE_NAME=`basename "$SOURCE_DIR"`# 备份文件名称BACKUP_FILE=$FILE_NAME\_$(date +%Y%m%d).tar.gz#如果备份文件保存目录不存在则创建if [ ! -d "$BACKUP_DIR" ]; thenmkdir -p $BACKUP_DIRfi# 创建备份文件tar -zcvPf $BACKUP_DIR/$BACKUP_FILE $SOURCE_DIR
}# 内存,cpu,磁盘使用
baseinfo(){# CPU usageCPU_USAGE=$(top -b -n 1 | grep "^%Cpu" | awk '{print $2}')# Memory usageMEM_USAGE=$(free | awk 'NR==2{printf "%.2f%%", $3/$2*100}')# Disk usageDISK_USAGE=$(df -h / | awk 'NR==2{print $5}')# Write results to log fileecho "$(date +"%Y-%m-%d %H:%M:%S") CPU usage: $CPU_USAGE, Memory usage: $MEM_USAGE, Disk usage: $DISK_USAGE" 
}# 开启防火墙
startFirewall(){# 获取 Linux 系统版本OS=$(awk -F= '/^NAME/{print $2}' /etc/os-release)# 根据系统版本执行相应的命令启动防火墙if [[ $OS == *"CentOS"* || $OS == *"Red Hat"* ]]; thensystemctl start firewalldsystemctl enable firewalldsystemctl start iptablessystemctl enable iptablessystemctl status iptablessystemctl status firewalldecho "Firewall has been started and enabled successfully."elif [[ $OS == *"Ubuntu"* || $OS == *"Debian"* ]]; thenufw enableecho "Firewall has been enabled successfully."elseecho "Unsupported operating system."exit 1fi
}
#关闭防火墙
stopFirewall(){# 获取 Linux 系统版本OS=$(awk -F= '/^NAME/{print $2}' /etc/os-release)# 根据系统版本执行相应的命令关闭防火墙if [[ $OS == *"CentOS"* || $OS == *"Red Hat"* ]]; thensystemctl stop firewalldsystemctl disable firewalldsystemctl stop iptablessystemctl disable iptablessystemctl status iptablessystemctl status firewalldecho "Firewall has been stopped and disabled successfully."elif [[ $OS == *"Ubuntu"* || $OS == *"Debian"* ]]; thenufw disableecho "Firewall has been disabled successfully."elseecho "Unsupported operating system."exit 1fi
}# 查看进程pid,启动时间,持续执行时间
pstime(){ps -eo pid,lstart,etime,cmd | grep $2
}# 根据进程ID查看进程工作目录
psdir(){ls -l /proc/$2/cwd 
}# 释放缓存
dropCache(){syncecho 3 > /proc/sys/vm/drop_caches
}# 第二个参数ip,第三个参数端口
pingPort(){# 定义IP地址和端口IP_ADDRESS=`echo $2`PORT=`echo $3`# 检查nc命令是否已经安装,如果未安装,则尝试安装if ! command -v nc &> /dev/null; thenif command -v apt-get &> /dev/null; thensudo apt-get update && sudo apt-get -y install netcatelif command -v yum &> /dev/null; thensudo yum install -y ncelseecho "无法自动安装nc命令,请手动安装后重试。"exit 1fifi# 使用nc命令检查IP地址和端口是否可用if nc -z -w 2 $IP_ADDRESS $PORT; thenecho "端口 $PORT 可以访问 $IP_ADDRESS"elseecho "端口 $PORT 无法访问 $IP_ADDRESS"fi
}# 查看进程使用的端口号
# 第二个参数出入安需要查询的进程,可以为pid,也可以为进程名称
catProcessorPort(){echo "-------------------------------------------------"PROCESS_NAME=`echo $2`# 使用pidof命令查找进程IDPID=$(pidof $PROCESS_NAME)# 如果找不到进程ID,则使用ps命令查找if [ -z "$PID" ]; thenPID=$(ps -ef | grep $PROCESS_NAME | grep -v grep | awk '{print $2}')fiecho 所有进程ID:$PID# 如果还是找不到进程ID,则输出错误信息并退出if [ -z "$PID" ]; thenecho "找不到进程 $PROCESS_NAME。"exit 1fifor PID2 in $PID; doecho "-------------------------------------------------"echo 进程ID:$PID2# 使用lsof命令查找进程占用的端口号PORTS=$(lsof -nP -p $PID2 | grep LISTEN | awk '{print $9}' | cut -d':' -f2 | sort -u)# 输出占用端口号if [ -n "$PORTS" ]; thenecho "进程 $PROCESS_NAME 占用的端口号:$PORTS"elseecho "进程 $PROCESS_NAME 没有占用任何端口。"fidoneecho "-------------------------------------------------"}# 查看使用端口的进程pid
# 第二个参数为端口号
catPortProcessor(){catPortProcessorPort=`echo $2`# 使用 lsof 命令查询端口号对应的进程pid=$(sudo lsof -t -i:$catPortProcessorPort)# 如果找到了进程,打印进程名称和 PIDif [ ! -z "$pid" ]; thenprocess_name=$(ps -p $pid -o comm=)echo "端口 $port 对应的进程是 $process_name,PID 是 $pid。"elseecho "端口 $port 没有被占用。"fi
}# 查看哪个目录占用磁盘空间大
# 第二个参数为:需要查看的目录
duh(){directory=`echo $2`# 遍历目录并计算大小du -h -d 1 $directory | sort -h# 输出占用存储空间最大的目录echo "占用存储空间最大的目录或文件是:"du -sh $directory/* | sort -hr | head -n 1
}# 使用内存最多的前十个进程
topMem(){echo "下面是 内存 占用率最高的前 10 个进程:"echosecho "进程ID 内存使用大小 启动命令"ps aux --sort=-%mem | head -n 11 | tail -n 10 | awk '{print $2,$6/1024"M",$11}'echos
}# 使用CPU最多的前十个进程
topCpu(){echo "下面是 CPU 占用率最高的前 10 个进程:"echosecho "进程ID cpu占用率 启动命令"ps aux --sort=-%cpu | head -n 11 | tail -n 10 | awk '{print $2,$3,$11}'echos
}# 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计) 
# 使用 netstat ‐atn 可以查看本机所有连接的状态,‐a 查看所有,
# -t仅显示 tcp 连接的信息,‐n 数字格式显示
# Local Address(第四列是本机的 IP 和端口信息)
# Foreign Address(第五列是远程主机的 IP 和端口信息)
# 使用 awk 命令仅显示第 5 列数据,再显示第 1 列 IP 地址的信息
# sort 可以按数字大小排序,最后使用 uniq 将多余重复的删除,并统计重复的次数
connectIp(){echo "连接数量 来源IP端口"# 第一列是连接数量,第二列是连接ip:portnetstat -atn  |  awk  '{print $5}'  | awk  '{print $1}' | sort -nr  |  uniq -c
}# 查看网卡流量
iftop(){sudo yum -y install iftopecho "请手动输入命令查看流量:iftop -P"
}# 显示系统基础信息
info(){# 获取系统 CPU 数量cpu_logical_count=$(nproc)cpu_physical_count=$(grep "physical id" /proc/cpuinfo | sort -u | wc -l)# 获取系统内存总容量、已使用内存量和可用内存量mem_total=$(grep MemTotal /proc/meminfo | awk '{print $2}')mem_used=$(free -m | awk 'NR==2{print $3}')mem_available=$(free -m | awk 'NR==2{print $4}')# 获取系统磁盘总容量、已使用磁盘空间和可用磁盘空间disk_total=$(df -BG --total | awk 'END{print $2}')disk_used=$(df -BG --total | awk 'END{print $3}')disk_available=$(df -BG --total | awk 'END{print $4}')# 获取系统 CPU 使用率cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}')# 将容量单位转换为 GB#disk_total=$(echo "scale=2;$disk_total/1024" | bc)#disk_used=$(echo "scale=2;$disk_used/1024" | bc)# 显示基础监控信息echo "系统 CPU 数量(逻辑处理器数量):$cpu_logical_count"echo "系统 CPU 数量(物理处理器数量):$cpu_physical_count"echo "系统内存总容量:$((mem_total / 1024)) MB"echo "系统已使用内存量:$mem_used MB"echo "系统可用内存量:$mem_available MB"echo "系统磁盘总容量:$disk_total GB"echo "系统已使用磁盘空间:$disk_used GB"echo "系统可用磁盘空间:$disk_available GB"echo "系统 CPU 使用率:$cpu_usage"
}echos(){echo "-------------------------------------------------"
}case "$1" in'backdir')backdir $*;;'baseinfo')baseinfo;;'stopFirewall')stopFirewall;;'startFirewall')startFirewall;;'pstime')pstime $*;;'psdir')psdir $*;;'dropCache')dropCache;;'ping-port')pingPort $*;;'processor-port')catProcessorPort $*;;'port-processor')catPortProcessor $*;;'duh')duh $*;;'top-mem')topMem ;;'top-cpu')topCpu ;;'connect-ip')connectIp;;'iftop')iftop;;'info')info;;*)exit 1
esac

脚本一键应用

sudo curl -L http://linux.hadoop.wiki/jastool.sh -o /usr/bin/jastool && sudo chmod +x /usr/bin/jastool

调用方法

jastool inf

相关文章:

Linux(CentOS)运维脚本工具集合

使用说明 备份指定目录 # 备份指定目录文件到指定目录,备份文件名称为:备份目录最后一层目录"_"日期.tar.gz # 第一个参数:backdir 第二参数:备份文件保存目录 第三个参数:备份目录/文件 sh script.sh backdir /root/…...

【Java alibabahutool】JSON、Map、实体对象间的相互转换

首先要知道三者的互转关系&#xff0c;可以先将JSON理解成是String类型。这篇博文主要是记录阿里巴巴的JSONObject的两个方法。toJSONString()以及parseObject()方法。顺便巩固Map与实体对象的转换技巧。 引入依赖 <!-- 阿里巴巴 JSON转换 以下二选一即可 没有去细研究两者…...

按软件开发阶段的角度划分:单元测试、集成测试、系统测试、验收测试

1.单元测试&#xff08;Unit Testing&#xff09; 单元测试&#xff0c;又称模块测试。对软件的组成单位进行测试&#xff0c;其目的是检验软件基本组成单位的正确性。测试的对象是软件里测试的最小单位&#xff1a;模块。 测试阶段&#xff1a;编码后或者编码前&#xff08;…...

【python】Leetcode(primer-dict-list)

文章目录 260. 只出现一次的数字 III&#xff08;字典 / 位运算&#xff09;136. 只出现一次的数字&#xff08;字典&#xff09;137. 只出现一次的数字 II&#xff08;字典&#xff09;169. 求众数&#xff08;字典&#xff09;229. 求众数 II&#xff08;字典&#xff09;200…...

网络安全(黑客)入门

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…...

在CSS中,盒模型中的padding、border、margin是什么意思?

在CSS中&#xff0c;盒模型&#xff08;Box Model&#xff09;是用来描述和布局HTML元素的基本概念。它将每个HTML元素看作是一个矩形的盒子&#xff0c;这个盒子包括了内容&#xff08;content&#xff09;、内边距&#xff08;padding&#xff09;、边框&#xff08;border&a…...

有线耳机插入电脑没声音

有线耳机插入电脑没声音 首先确保耳机和电脑都没问题&#xff0c;那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。...

【面试 反思】Retrofit源码与设计 7 连问

前言 在实际项目中往往是使用Retrofit来做网络请求工作。Retrofit采用RESTful风格&#xff0c;本质上只是对OkHttp进行封装&#xff0c;今天我们根据几个问题来进一步学习一下Retrofit的源码与设计思想。 1. 使用方法 直接看一下官方介绍的使用方法。 public final class S…...

flutter 雷达图

通过CustomPainter自定义雷达图 效果如下 主要代码 import package:flutter/material.dart; import dart:math; import dash_painter.dart; import model/charts_model.dart;class RadarChart extends StatelessWidget {final List<ChartModel> list;final double maxV…...

机器学习之损失函数(Loss Function)

损失函数&#xff08;Loss Function&#xff09;是机器学习和深度学习中的关键概念&#xff0c;它用于衡量模型的预测与实际目标之间的差异或误差。损失函数的选择对于模型的训练和性能评估至关重要&#xff0c;不同的任务和问题通常需要不同的损失函数。 以下是一些常见的损失…...

创邻科技张晨:图数据库,激活数据要素的新基建

“数据经济时代&#xff0c;数据要素产业链的各细分领域均蕴含机遇&#xff0c;图技术作为网络协同和数据智能的底层发动机&#xff0c;将深度掘金数字中国价值潜能”。 8月22日&#xff0c;在2023中国&#xff08;南京&#xff09;国际软件产品和信息服务交易博览会的信息技术…...

使用端口映射实现Spring Boot服务端接口的公网远程调试:详细配置与步骤解析

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…...

stm32之点亮LED

今天&#xff0c;记录一下stm32如何点亮一个LED,程序本身十分简单&#xff0c;但主要是学习编程的格式。 led.h #ifndef _led_H #define _led_H#include "system.h"/* LED时钟端口、引脚定义 */ #define LED1_PORT GPIOB #define LED1_PIN GPIO_Pin_5 #d…...

SA8000认证的难点及注意事项

SA8000认证是什么&#xff1f; SA8000即“社会责任标准”&#xff0c;是Social Accountability 8000的英文简称&#xff0c;由社会责任国际组织(SAI)制定与执行&#xff0c;是全球首个道德规范国际标准。自1997年问世以来&#xff0c;它创建了一个衡量社会责任的共同语言&#…...

Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤

基于微服务JavaSpring Cloud Vue UniApp MySql实现的智慧工地云平台源码 智慧工地是指利用云计算、大数据、物联网、移动互联网、人工智能等技术手段&#xff0c;为建筑施工现场提供智能硬件及物联网平台的解决方案&#xff0c;以实现建筑工地的实时化、可视化、多元化、智慧化…...

告别数字化系统“物理叠加”,华为云推动智慧门店价值跃迁

文|智能相对论 作者|叶远风 有大屏幕滚动播放广告&#xff1b; 有人脸识别系统让消费者自助结账&#xff1b; 有订单管理系统综合分析一段时间内总体经营情况&#xff1b; 有全门店监控直连总部机房&#xff1b; …… 以搭载数字化系统的硬件设备为表面特征的智慧门店&a…...

k8s 常用命令(四)

12、删除pod中的nginx服务及service [rootmaster ~]# kubectl delete deployment nginx -n kube-public [rootmaster ~]# kubectl delete svc -n kube-public nginx-service 13、查看endpoint的信息 [rootmaster ~]# kubectl get endpoints 14、修改/更新&#xff08;镜像、…...

大语言模型的分布式训练

什么是大语言模型 大语言模型(Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。LLM的特点是规模庞大,包含数十亿的参数,帮助它们学习语言…...

【JavaEE】Spring全家桶实现AOP-统一处理

【JavaEE】AOP&#xff08;2&#xff09; 文章目录 【JavaEE】AOP&#xff08;2&#xff09;1. 统一登录校验处理1.1 自定义拦截器1.2 将自定义拦截器加入到系统配置1.3 测试1.4 对于静态资源的处理1.5 小练习&#xff1a;统一登录拦截处理1.6 拦截器原理1.6.1 执行流程1.6.2 源…...

HQL解决连续三天登陆问题

1.背景 统计连续登录天数超过3天的用户&#xff0c;输出信息包括&#xff1a;用户id&#xff0c;登录天数&#xff0c;起始时间&#xff0c;结束时间&#xff1b; 2.准备数据 -- 建表 create table if not exists user_login_3days(user_id STRING,login_date date );--插入…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...