|
|
51CTO旗下网站
|
|
移动端

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

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

作者:波波说运维来源:今日头条|2019-08-12 07:45

写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脚本实例分享

【编辑推荐】

  1. 如何用Linux命令行工具解析和格式化输出JSON
  2. 豆瓣高分好评!10本Linux/Unix书籍盘点
  3. 5 个免费的 Linux 分区管理器
  4. 知名技术杂志 Linux Journal 宣布关闭,解雇所有员工
  5. 分享7个shell脚本实例--shell脚本练习必备
【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

这就是5G

这就是5G

5G那些事儿
共15章 | armmay

58人订阅学习

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

349人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

723人订阅学习

读 书 +更多

网络工程师教程(第2版)

本书是全国计算机技术与软件专业技术资格(水平)考试的指定用书。按照新的网络工程师考试大纲的规定,本书包含了数据通信基础知识、网络体...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客