博客
关于我
Linux中常用的Shell脚本(运维+常用)汇总
阅读量:795 次
发布时间:2023-02-03

本文共 3014 字,大约阅读时间需要 10 分钟。

废话不多说,直接上干货!

一、运维脚本

(1)监控CPU和内存的使用情况

#!/bin/bashcpu_threshold=80mem_threshold=80# 获取CPU和内存使用率cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')mem_usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')# 检查CPU使用率if (( $(echo "$cpu_usage > $cpu_threshold" | bc -l) )); then    echo "CPU usage is above threshold: $cpu_usage%"fi# 检查内存使用率if (( $(echo "$mem_usage > $mem_threshold" | bc -l) )); then    echo "Memory usage is above threshold: $mem_usage%"fi

(2)定期备份到指定目录脚本

#!/bin/bashbackup_source="/path/to/source"backup_dest="/path/to/backup"timestamp=$(date +"%Y%m%d%H%M")# 创建备份tar -czf "$backup_dest/backup_$timestamp.tar.gz" -C "$backup_source" .# 删除7天前的备份find "$backup_dest" -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;

(3)自动轮转、压缩和删除旧日志

#!/bin/bashlog_file="/var/log/myapp.log"max_size=10485760  # 10 MBif [ -f "$log_file" ]; then    log_size=$(stat -c%s "$log_file")    if [ "$log_size" -ge "$max_size" ]; then        mv "$log_file" "$log_file.old"        touch "$log_file"        gzip "$log_file.old"    fifi

(4)磁盘监控脚本

#!/bin/bashthreshold=90df -H | awk '{if ($5 > threshold) print $0}' | while read line; do    echo "Disk space alert: $line"done

二、常用其他脚本

(1)输出不同颜色的提示语

#打印不同颜色方法echo_color() {	if [ $1 == "green" ]; then		echo -e "\033[32;40m$2\033[0m"	elif [ $1 == "red" ]; then		echo -e "\033[31;40m$2\033[0m"	elif [ $1 == "yellow" ]; then		echo -e "\033[33;40m$2\033[0m"	elif [ $1 == "blue" ]; then		echo -e "\033[34;40m$2\033[0m"	fi}

(2)检测IP格式合规性

# 函数:检测IP格式is_valid_ip() {    local ip="$1"    [[ "$ip" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] && return 0 || return 1}

(3)检测端口合规性

# 函数:检测端口号is_valid_port() {    local port="$1"    [[ "$port" =~ ^[0-9]+$ ]] && [ "$port" -ge 1 ] && [ "$port" -le 65535 ] && return 0 || return 1}

(4)检测某端口是否已存在

check_port(){	check_port=$1	check_result="$(netstat -tunlp|grep -w ${check_port} |awk '{print $7}'|cut -d/ -f1)"	if [[ -n "$check_result" ]];then		echo "$check_port端口已被占用"		exit 1    else	  echo "端口:$check_port,可用"	fi}

(5)设置某个服务开机自启动

#根据服务名称设置服务开机自启动set_service_on(){  service_name=$1  chmod 644 /lib/systemd/system/${service_name}.service  chown root:root /lib/systemd/system/${service_name}.service  systemctl daemon-reload  systemctl restart ${service_name}  systemctl enable ${service_name}}

(6)获取当前服务器时间(标准格式)

time=`date "+%Y-%m-%d^%H:%M:%S"`

(7)检查服务在线状态(端口和进程)

#被检测服务的端口号PORT="10000"#被检测服务的java程序COUNT="$(ps -ef|grep "xxxxxxxxxxxxxxxxx.jar"|grep -v grep|wc -l)"if [[ -n "$PORT" ]];then  echo "服务正常启动"elif [[ $COUNT -eq 1 ]]; then  echo "服务正在启动中,请稍后... ..."else  echo "服务异常,请重启服务"fi

(8)执行简单的定时任务

while true; do    echo "Running task at $(date)"    sleep 60  # 每60秒执行一次done

(9)并行执行多个命令

{    sleep 2    echo "Task 1 completed"} & {    sleep 3    echo "Task 2 completed"}wait  # 等待所有后台任务完成echo "All tasks completed."

(10)使用条件语句进行文件(文件夹)判别

if [ -f "myfile.txt" ]; then    echo "File exists."elif [ -d "mydir" ]; then    echo "It's a directory."else    echo "File or directory does not exist."fi

若有需要帮忙写的Shell脚本,可以留言!

转载地址:http://qszfk.baihongyu.com/

你可能感兴趣的文章
linux下查询硬件的命令
查看>>
Linux下汇编语言学习笔记53 ---
查看>>
Linux下添加服务
查看>>
Linux下环境变量设置
查看>>
Linux下用mutt给QQ邮箱发匿名邮件
查看>>
Linux下用于查看系统当前登录用户信息 w命令
查看>>
Linux下用脚本命令打开文档、表格、PPT
查看>>
LINUX下登录脚本的执行顺序
查看>>
linux下的 lib文件的学习思考
查看>>
Linux下的64位数赋值要加入LL
查看>>
linux下的7种文件类型[ls -l]
查看>>
Linux下的PDF阅读器Foxit
查看>>
Linux下的Shell编程:基础、应用与最佳实践
查看>>
Linux下的串口系列---struct termios结构体
查看>>
Linux下的备份与恢复策略:全方位守护你的数据
查看>>
Linux下的多用户管理和认证:从入门到精通(附实例)
查看>>
Linux下的容器化技术:从入门到实践
查看>>
Linux下的文件权限与访问控制:守护你的数据宝藏
查看>>
Linux下的版本控制系统——Git:初学者指南
查看>>
Linux下的硬件管理与设备驱动全解析
查看>>