当前位置: 首页 > 科技观察

Linux脚本学习必经之路:Shell脚本实例分享

时间:2023-03-14 10:31:47 科技观察

写shell脚本还是老样子,思路第一,语法第二。下面是一些脚本示例。大家主要是理解里面的思路,注意语法。1.观察数字,输出包括前6个数字在内的16个数字。观察下面的数字,看看是什么规则:10315377105141这里的数字的规则是两个数之差是2的幂,那么怎么用shell脚本呢?#!/bin/bash#################################################10315377105141#观察数字,输出16个数字包括前6个数字#数字的规律是两个数字的差是2的次方################################################a=10b=21echo$aforiin`seq013`do#2$ipowerc=$[2**$i]a=$[$a+$b]b=$[$b+$c]echo$adonea=$[$a+$b]echo$a输出结果:2、检查linux系统是否有自定义用户,并统计自定义用户的数量#!/bin/bash#############################################################检查Linux系统中是否存在自定义用户,并统计自定义用户的个数#截取其中的个数/etc/passwd文件第三段,大于1000的为自定义用户#############################################################n=`awk-F':''$3>1000'/etc/passwd|wc-l`if[$n-gt0]thenecho"thereare$ncustomusers"elseecho"nocustomuser"fi结果输出:3.监控磁盘分区和inode使用情况并报警#!/bin/bash###################################################################监控所有磁盘分区和inode使用情况。当分区容量或inode使用率大于85%时,发送邮件告警####################################################################设置系统语言为英文,如果是中文,会生成bugLANG=enlog=/tmp/`date+%F.log`tag1=0tag2=0df-h>>$logdf-i>>$log#遍历每个磁盘利用率的值forhin`df-h|grep-v'Use'|awk-F'+|%''{print$5}'`doif[$h-gt85]then$tag1=1fidone#遍历每个磁盘inode的值foriin`df-i|grep-v'Use'|awk-F'+|%''{print$5}'`doif[$i-gt85]then$tag2=1fidone#磁盘空间和inode没有问题,tag=0if[$tag1-eq0]&&[$tag2-eq0]thentag=0fi#磁盘空间有问题,但是inode没有问题,tag=1if[$tag1-eq1]&&[$tag2-eq0]thentag=1fi#磁盘空间没有问题,inode有问题,tag=2if[$tag1-eq0]&&[$tag2-eq1]thentag=2fi#磁盘空间和inode有问题,tag=3if[$tag1-eq1]&&[$tag2-eq1]thentag=3fi#根据不同的tag值,最终输出不同case$tagin0)echo"noproblem."##mail.py;;1)ech??o"diskspaceisnotenough."##mail.py;;2)echo"diskinodeisnotenough."##mail.py;;3)echo"diskspaceanddiskinodearenotenough."##mail.py;;esac输出结果:4.监控目标目录下文件的生成。需求:使用脚本每隔5分钟监控目标目录下是否有新文件。如果生成了新文件,则列出新文件输出到日志,按年、月、日、时、名划分执行:#!/bin/bash####################################################################################每5分钟使用脚本监控目标目录下是否有新文件。如果有新的文件产生,就会产生新的文件#列表输出到日志,按年、月、日、时、名分成名字###################################################################a=`date-d"-5min"+%Y-%m-%d-%H-%M`logfile=/tmp/$a.logbasedir=/home#查找修改时间较少的文件超过5分钟,并将列表记录在临时文件中thenmv/tmp/test.txt$logfilefi5.查看常用命令并列出TOP10#!/bin/bash########################################排序历史命令|检查重复项|倒序排列|取前10行######################################sort/根目录/.bash_history|uniq-c|sort-nr|head输出: