Shell脚本实用技巧集锦:从时间判断到系统监控
Shell脚本是Linux系统管理和自动化任务中不可或缺的工具。本文将分享几个实用的Shell脚本示例,涵盖时间判断、文件统计、随机密码生成、服务监控和系统资源查看等功能。这些脚本可以直接使用,也可作为学习Shell编程的参考。
1. 根据时间判断时间段
以下脚本根据当前系统时间输出对应的时间段(凌晨、早上、中午、下午、晚上):
#!/bin/basha=$(date +%H)if [ $a -ge 6 -a $a -lt 11 ]; thenecho "现在时间是早上$a点"
elif [ $a -ge 11 -a $a -lt 13 ]; thenecho "现在时间是中午$a点"
elif [ $a -ge 13 -a $a -lt 18 ]; thenecho "现在时间是下午$a点"
elif [ $a -ge 18 -a $a -lt 24 ]; thenecho "现在时间是晚上$a点"
elseecho "现在时间是凌晨 $a 点"
fi
2. 统计 /var/log 目录下的文件数量并列出文件名
#!/bin/bashcd /var/log
sum=0for i in $(ls -r *); doif [ -f "$i" ]; thenlet sum++echo "文件名:$i"fi
doneecho "总文件数量为:$sum"
3. 需要ping 通 某个网段机器并且输出 通和不通 反馈结果
4. 随机生成密码
生成一个包含数字、字母和特殊字符的15位随机密码:
#!/bin/bashkey="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-+="
num=${#key}for i in {1..15}; doindex=$[RANDOM%num]pass=$pass${key:$index:1}
doneecho $pass
5. 监控服务运行状态(以httpd为例)
循环检查httpd服务是否在运行:
#!/bin/bashwhile ps -aux | grep httpd | grep -v grep &> /dev/null; doecho "httpd 正在运行中"sleep 2
doneecho "httpd 不在运行中"
6. 使用case语句查看系统资源使用情况
提供一个交互式菜单,查看CPU、内存、硬盘使用情况:
#!/bin/bashecho "请选择查看的系统信息:"
echo "1. CPU 使用情况"
echo "2. 内存 使用情况"
echo "3. 硬盘 使用情况"
echo "4. 退出"read -p "请输入选项(1/2/3/4):" yjwcase $yjw in"1")echo "正在查看CPU使用情况......"top -bn1 | grep "Cpu(s)";;"2")echo "正在查看内存使用情况......"free -h;;"3")echo "正在查看硬盘使用情况......"df -h;;"4")echo "退出程序"exit 0;;*)echo "请输入整数值:1、2、3、4。其他无效";;
esac
结语
以上脚本涵盖了Shell编程中常见的条件判断、循环、文件操作、进程监控和用户交互等场景。你可以根据需要修改或组合这些脚本,提升日常系统管理和自动化任务的效率。