Centos系统运维脚本

目录

备份指定目录

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

显示基础信息-详细

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

根据进程id查看工作目录

清除Linux系统占用缓存

查看端口是否使用

查看进程使用的端口

查看端口所在进程

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

查看内存使用前十的进程

查看CPU使用前十的进程

开启防火墙

关闭防火墙

查看网卡流量

查看有多少远程IP连接本机


备份指定目录

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

#!/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、磁盘、内存使用率

 sh script.sh baseinfo

#!/bin/bash
# 内存,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" 
}

显示基础信息-详细

sh script.sh info

#!/bin/bash
# 显示系统基础信息
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

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

sh script.sh pstime 进程名/id

#!/bin/bash
# 查看进程pid,启动时间,持续执行时间
pstime(){ps -eo pid,lstart,etime,cmd | grep $2
}

根据进程id查看工作目录

sh script.sh psdir 15008

#!/bin/bash
# 根据进程ID查看进程工作目录
psdir(){ls -l /proc/$2/cwd 
}

清除Linux系统占用缓存

sh script.sh dropCache

#!/bin/bash
# 释放缓存
dropCache(){syncecho 3 > /proc/sys/vm/drop_caches
}

查看端口是否使用

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

#!/bin/bash
# 第二个参数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
}

查看进程使用的端口

sh scripte.sh processor-port 进程信息

#!/bin/bash
# 查看进程使用的端口号
# 第二个参数出入安需要查询的进程,可以为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 "-------------------------------------------------"}

查看端口所在进程

sh scripte.sh processor-port 5678

#!/bin/bash
# 查看使用端口的进程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
}

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

sh script.sh duh /var/lib

#!/bin/bash
# 查看哪个目录占用磁盘空间大
# 第二个参数为:需要查看的目录
duh(){directory=`echo $2`# 遍历目录并计算大小du -h -d 1 $directory | sort -h# 输出占用存储空间最大的目录echo "占用存储空间最大的目录或文件是:"du -sh $directory/* | sort -hr | head -n 1
}

查看内存使用前十的进程

sh script.sh top-mem

#!/bin/bash
# 使用内存最多的前十个进程
topMem(){echo "下面是 内存 占用率最高的前 10 个进程:"echosecho "进程ID 内存使用大小 启动命令"ps aux --sort=-%mem | head -n 11 | tail -n 10 | awk '{print $2,$6/1024"M",$11}'echos
}

查看CPU使用前十的进程

sh script.sh top-cpu

#!/bin/bash
# 使用CPU最多的前十个进程
topCpu(){echo "下面是 CPU 占用率最高的前 10 个进程:"echosecho "进程ID cpu占用率 启动命令"ps aux --sort=-%cpu | head -n 11 | tail -n 10 | awk '{print $2,$3,$11}'echos
}

开启防火墙

#!/bin/bash
# 开启防火墙
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
}

关闭防火墙

#!/bin/bash
#关闭防火墙
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
}

查看网卡流量

#!/bin/bash
# 查看网卡流量
iftop(){sudo yum -y install iftopecho "请手动输入命令查看流量:iftop -P"
}

查看有多少远程IP连接本机

#!/bin/bash
# 查看有多少远程的 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
}

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

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

相关文章

【UE4 C++】根据指定路径生成静态网格体

在上一篇博客中(【UE C】蓝图调用C函数),我们用C创建了一个蓝图函数库,本篇文章在这个蓝图函数库基础上增加一个方法,该方法只需输入一个文件目录路径,就可在场景中生成该目录下得所有静态网格体。&#xf…

第6集丨JavaScript 使用原型(prototype)实现继承——最佳实战3

目录 一、原型继承与属性拷贝1.1 功能说明1.2 功能测试 二、多重继承2.1 功能实现2.2 功能测试 三、寄生式继承四、构造器借用4.1 简单实现4.2 进化版4.2.1 功能实现4.2.2 案例测试 五、借用构造器和原型复制六 综合案例6.1 需求说明6.2 代码实现 一、原型继承与属性拷贝 1.1 功…

R语言数据统计分析与ggplot2高级绘图教程

详情点击链接:R语言数据统计分析与ggplot2高级绘图教程 一:R语言与数据管理1.1 R语言 1.2 R包安装 1.3 R数据读取与重构 1.4 dp1yr包与数据编辑二:R试验设计与数据分析2.1 试验设计 2.2 RCB设计 2.3 BIB设计 2.4 正交设计 2.5 析因设计三&am…

css之:is()、:where()和:has()伪元素的运用、使用、important

文章目录 简介1、:is()2、:where()3、:has() 简介 :is()、:where()和:has()伪元素是CSS中用于样式化元素的非常强大的工具。它们是在CSS选择器Level4规范中引入的。它们允许我们将样式应用于符合特定条件的任何元素,例如元素的类型、元素的位置和元素的后代。 1、:i…

Java 流Stream

文章目录 前言Stream是什么Stream流语法Stream流的常用方法代码示例 前言 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象…

【高并发】高并发架构实战:从需求分析到系统设计

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 很多软件工程师的职业规划是成为架构师,但是要成为架构师很多时候要求先有架构设计经验,而不做架构师又怎么会有架构设计经验呢?那么要如何获得架构设…

前端渲染模式CSR,SSR,SSG,ISR,DPR

目录 一、客户端渲染——CSR(Client Side Rendering) 二、服务器端渲染——SSR(Server Side Rendering) 三、静态站点生成——SSG(Static Site Generation) 四、增量静态生成——ISR(Increm…

【软件测试】在Windows环境安装Docker(详细步骤)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 下载和安装 1、地…

智慧园区4G+蓝牙+GPS/北斗RTK人员定位系统解决方案

智慧园区是指利用现代科技手段进行精细化管理的园区,人员定位技术被广泛应用在智慧园区。智慧园区人员定位技术通过使用传感器设备,能够实时监测园区内人员的位置和活动情况,从而提高园区的人员管理效率和安全性。 通过人员定位,…

云HIS是什么?HIS系统为什么要上云?云HIS有哪些优点?

一、当前医疗行业HIS的现状与发展趋势 1.医院信息系统(HIS)经历了从手工到单机再到局域网的两个阶段,随着云计算、大数据新技术迅猛发展,基于云计算的医院信息系统将逐步取代传统局域网HIS , 以适应人们对医疗卫生服务越来越高的要…

常用分类损失CE Loss、Focal Loss及GHMC Loss理解与总结

一、CE Loss 定义 交叉熵损失(Cross-Entropy Loss,CE Loss)能够衡量同一个随机变量中的两个不同概率分布的差异程度,当两个概率分布越接近时,交叉熵损失越小,表示模型预测结果越准确。 公式 二分类 二…

Zookeeper 分布式锁案例

一、概述: Zookeeper 是一个开源的分布式协调服务,可以用于维护分布式系统中的一致性、顺序性和命名等。其中,Zookeeper 的分布式锁机制可以用于实现分布式系统中的互斥访问,确保在多个节点上对共享资源进行同步访问。 Zookeepe…

深入理解预训练(pre-learning)、微调(fine-tuning)、迁移学习(transfer learning)三者的联系与区别

1. 什么是预训练和微调 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先,你需要随机初始化参数,然后开始训练网络,不断调整参数,直到网络的损失越来越小。在训练的过程中,一开始初始化的参数会不断变化。…

小程序:页面跳转闪屏

自己的笔记,随手记录。扛精走开。 1、问题描述 进入页面,是一个组件,通过路由传参判断是由哪个页面进入,不同的页面拿的已选值不一样,需要回显值,在编辑数据。此时会出现一个问题,A页面中进来…

Serverless和EDA是绝配,亚马逊云科技CTO Werner表示需要用开放心态来重新审视架构

前一段有个很火的博客,讲的是一家全球流媒体企业的监测系统从Serverless微服务改成了单体,成本居然降低了90%!这一下子可在网上炸锅了,特别是一些看不惯微服务的、单体应用的拥趸,更是坐不住了。但这并不像吃瓜群众看到…

0基础学C#笔记01:数组复制

文章目录 前言一、错误的复制方式二、正确的复制方式1.复制方式 一2.复制方式 二3.复制方式 三4.复制方式 四三、验证总结前言 C# 数组复制的四种方式,简单明了实用 我们先创建一个数组: string[] names = {"张三", "李四",

【ECharts系列】ECharts 图表渲染问题解决方案

1 问题描述 echats 渲染,第一次的时候只出现Y轴数值,不出现X轴数值,切换下页面,X轴数值就能出现。 2 原因分析 如果在使用ECharts渲染时,X轴数值只在切换页面后才出现,可能是因为ECharts在初始化时没有正确…

光速吟唱,Clibor ,批量多次复制依次粘贴工具 快捷输入软件教程

批量多次复制依次粘贴工具 批量复制粘贴工具0.81.exe https://www.aliyundrive.com/s/3sbBaGmHkb8 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 青县solidworks钣金设计培训 …

Redis进阶 - Redis哨兵

原文首更地址,阅读效果更佳! Redis进阶 - Redis哨兵 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-advance-sentinel.html 思考 slave 节点宕机恢复以后可以找 master 节点同步数据,那么 master 节点宕机怎么办&am…

MFC 利用多态的特性实现子窗口同时存在一个

多个子窗口的类都继承同一父类 CDialogEx 于是在主窗口我声明一个CDialogEx指针 通过判断该指针是否为空 不为空则视为有一子窗口存在 注意这里介绍的是 非模态化窗口的关闭 你可以在任何时候调用DestroyWindow()以达到彻底销毁自身对象的作用。(DestroyWindow()的…