linux 监控cpu、磁盘和内存的shell脚本并写成定时任务

最近在学shell脚本开发,然后就想写一个简单的监控脚本,然后做成定时任务,期间碰到了定时任务不生效的问题。在这里统一记录下来
shell脚本如下:

 
  1. #!/bin/bash

  2. #获取ip地址

  3. #ip=`ifconfig eth0 | grep "inet" | cut -f 2 -d ":"`

  4. #获取系统总核数

  5. #cpu_num=`grep -c 'model name' /proc/cpuinfo`

  6. #cpu_num=grep -c 'cpu cores' /proc/cpuinfo

  7. #获取当前时间

  8. now=`date -u -d"+8 hour" +'%Y-%m-%d %H:%M:%S'`

  9. #cpt使用阈值

  10. cpu_warn='75'

  11. #mem空闲阈值

  12. mem_warn='100'

  13. #disk使用阈值

  14. disk_warn='90'

  15. #------cpu

  16. function item_cpu(){

  17. cpu_idle=` top -b -n 1 | grep Cpu |awk {'print $8'}|cut -f 1 -d "."`

  18. #cpu使用率

  19. cpu_use=`expr 100 - $cpu_idle`

  20. echo "$now 当前的cpu使用率为 $cpu_use" >> /linuxTest/cpu.log

  21. if [[ $cpu_use -gt $cpu_warn ]]; then

  22. echo "cpu报警" >> /linuxTest/cpu.log #这里的文件类型要写成绝对路径,要不然定时任务会不生效

  23. else

  24. echo "cpu使用正常" >> /linuxTest/cpu.log

  25. fi

  26. }

  27.  
  28. #----mem内存

  29. function item_mem(){

  30. mem_free=`free -m |grep "Mem"| awk {'print $4+$6'}`

  31. echo "$now 当前内存剩余空间为 $mem_freeMB" >> /linuxTest/mem.log

  32. if [[ $mem_free -lt $mem_warn ]]; then

  33. echo "mem报警" >> /linuxTest/mem.log

  34. else

  35. echo "mem使用正常" >> /linuxTest/mem.log

  36. fi

  37.  
  38. }

  39.  
  40.  
  41. #----disk磁盘

  42. function item_disk(){

  43. disk_use=`df -P | grep /dev | grep -v -E '(tmp|boot)' | awk '{print $5}' | cut -f 1 -d "%"`

  44. echo "$now 当前磁盘使用率为 $disk_use %" >> /linuxTest/disk.log

  45. if [[ $disk_use -gt $disk_warn ]]; then

  46. echo "disk报警" >> /linuxTest/disk.log

  47. else

  48. echo "disk使用正常" >> /linuxTest/disk.log

  49.  
  50. fi

  51.  
  52. }

  53.  
  54. item_cpu

  55. item_disk

  56. item_mem

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

写完shell脚本之后就想这跑个定时任务

命令是:crontab -e
然后就会进入到定时任务的编写中(有关定时任务的参数可以自己百度)
我写了一个每分钟都执行的测试案例
命令是:* * * * * /linuxTest/cpuWatch.sh

然后写完命令后重启crond的服务,发现这个定时任务一直都没有跑起来,去查了一下资料后,设置了几个参数
1.首先 tail -100f /var/log/messages 查看系统运行的日志,发现了
crond: sendmail: fatal: parameter inet_interfaces: no local interface found for ::1,解决完这个问题后,还是没有跑起来
2.然后把日志的文件路径写成了绝对路径后,就可以跑起来了

linux 监控cpu、磁盘和内存的shell脚本并写成定时任务

嘿嘿,解决问题的感觉还是很爽的!虽然是个小问题,可是这种成就感还是很好的

上一篇:格式化U盘


下一篇:Vertically Scaling PostgreSQL