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

Posted 知网乎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux脚本学习必经之路:Shell脚本实例分享相关的知识,希望对你有一定的参考价值。

写shell脚本还是一样,思路第一,语法其次,下面分享几个脚本实例,大家主要是理解一下里面的思路,语法稍微注意一下。

1. 观察数字,输出包含前6个数字在内的16个数字

观察以下数字,看有什么规律:

 
   
   
 
  1. 10 31 53 77 105 141 

这里数字的规律在于两个数字的差值的差值是2的幂次方

那么怎么用shell脚本实现需求呢?

 
   
   
 
  1. #!/bin/bash 

  2. ############################################### 

  3. #10 31 53 77 105 141 

  4. #观察数字,输出包含前6个数字在内的16个数字 

  5. #数字的规律在于两个数字的差值的差值是2的幂次方 

  6. ############################################### 

  7. a=10 

  8. b=21 

  9. echo $a 

  10. for i in `seq 0 13` 

  11. do 

  12.  #2的$i次幂 

  13.     c=$[2**$i] 

  14.  a=$[$a+$b] 

  15.  b=$[$b+$c] 

  16.  echo $a 

  17. done 

  18. a=$[$a+$b] 

  19. echo $a 

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

输出结果:

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

2. 查看Linux系统中是否存在自定义用户,并统计自定义用户数量

 
   
   
 
  1. #!/bin/bash 

  2. ########################################################## 

  3. #查看Linux系统中是否存在自定义用户,并统计自定义用户数量 

  4. #截取/etc/passwd文件中第三段的数字,大于1000者即为自定义用户 

  5. ########################################################## 

  6. n=`awk -F ':' '$3>1000' /etc/passwd|wc -l` 

  7. if [ $n -gt 0 ] 

  8.  then 

  9.  echo "there are $n custom users" 

  10.  else 

  11.  echo "no custom user" 

  12. fi 

结果输出:

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

3. 监控磁盘分区以及inode使用率并告警

 
   
   
 
  1. #!/bin/bash 

  2. ################################################################ 

  3. #监控所有磁盘分区以及inode使用率,当某个分区容量或inode使用量大于85%时,发送邮件告警 

  4. ################################################################ 

  5. #将系统语言设置为英文,如果是中文则会产生bug 

  6. LANG=en 

  7. log=/tmp/`date +%F.log` 

  8. tag1=0 

  9. tag2=0 

  10. df -h >> $log 

  11. df -i >> $log 

  12. #遍历各个磁盘利用率的数值 

  13. for h in `df -h|grep -v 'Use'|awk -F ' +|%' '{print $5}'` 

  14. do 

  15.  if [ $h -gt 85 ] 

  16.  then  

  17.  $tag1=1 

  18.  fi 

  19. done 

  20. #遍历各个磁盘inode的数值 

  21. for i in `df -i|grep -v 'Use'|awk -F ' +|%' '{print $5}'` 

  22. do 

  23.  if [ $i -gt 85 ] 

  24.  then 

  25.  $tag2=1 

  26.  fi 

  27. done 

  28. #磁盘空间以及inode都没有问题,tag=0 

  29. if [ $tag1 -eq 0 ] && [ $tag2 -eq 0 ] 

  30.  then  

  31.  tag=0 

  32. fi 

  33. #磁盘空间有问题,inode没有问题,tag=1 

  34. if [ $tag1 -eq 1 ] && [ $tag2 -eq 0 ] 

  35.  then 

  36.  tag=1 

  37. fi 

  38. #磁盘空间没有问题,inode有问题,tag=2 

  39. if [ $tag1 -eq 0 ] && [ $tag2 -eq 1 ] 

  40.  then 

  41.  tag=2 

  42. fi 

  43. #磁盘空间以及inode都有问题,tag=3 

  44. if [ $tag1 -eq 1 ] && [ $tag2 -eq 1 ] 

  45.  then 

  46.  tag=3 

  47. fi 

  48. #根据不同的tag数值,最终输出不同的结果 

  49. case $tag in 

  50.  0) 

  51.  echo "no problem." 

  52.  ##mail.py 

  53.  ;; 

  54.  1) 

  55.  echo "disk space is not enough." 

  56.  ##mail.py  

  57.  ;; 

  58.  2) 

  59.  echo "disk inode is not enough." 

  60.  ##mail.py 

  61.  ;; 

  62.  3) 

  63.  echo "disk space and disk inode are not enough." 

  64.  ##mail.py 

  65.  ;; 

  66. esac 

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

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

输出结果:

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

4. 监测目标目录的文件生成情况

需求:用脚本每隔5分钟监测目标目录是否有新文件生成,若有新文件生成,则将新文件的列表输出到一个按年、月、日、时、分为名字的日志里。

实现:

 
   
   
 
  1. #!/bin/bash 

  2. ################################################################## 

  3. #用脚本每隔5分钟监测目标目录是否有新文件生成,若有新文件生成,则将新文件 

  4. #列表输出到一个按年、月、日、时、分为名字的日志里 

  5. ################################################################## 

  6. a=`date -d "-5 min" +%Y-%m-%d-%H-%M` 

  7. logfile=/tmp/$a.log 

  8. basedir=/home 

  9. #查找修改时间少于5分钟的文件,并将列表记录在临时文件中 

  10. find $basedir/ -type f -mmin -5 > /tmp/test.txt 

  11. n=`cat /tmp/test.txt|wc -l` 

  12. if [ $n -gt 0 ] 

  13.  then  

  14.  mv /tmp/test.txt $logfile 

  15. fi 

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

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

5. 查看常用命令,并列出TOP10

 
   
   
 
  1. #!/bin/bash 

  2. #################################### 

  3. #对历史命令排序|查重|倒叙排列|取前10行 

  4. #################################### 

  5. sort /root/.bash_history|uniq -c|sort -nr|head 

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

输出:

来源:今日头条

以上是关于Linux脚本学习必经之路:Shell脚本实例分享的主要内容,如果未能解决你的问题,请参考以下文章

25个shell脚本代码分享,日常工作够用了

linux学习笔记:shell脚本编程相关(上)

shell脚本实例

shell脚本中输出带颜色字体实例分享

你的Linux成长之路,这些shell脚本的坑你一定有

学习之路浅谈:shell弱类型编程语言及脚本语法