最近在學shell腳本開發,而後就想寫一個簡單的監控腳本,而後作成定時任務,期間碰到了定時任務不生效的問題。在這裏統一記錄下來
shell腳本以下:
linux
#!/bin/bash #獲取ip地址 #ip=`ifconfig eth0 | grep "inet" | cut -f 2 -d ":"` #獲取系統總核數 #cpu_num=`grep -c 'model name' /proc/cpuinfo` #cpu_num=grep -c 'cpu cores' /proc/cpuinfo #獲取當前時間 now=`date -u -d"+8 hour" +'%Y-%m-%d %H:%M:%S'` #cpt使用閾值 cpu_warn='75' #mem空閒閾值 mem_warn='100' #disk使用閾值 disk_warn='90' #------cpu function item_cpu(){ cpu_idle=` top -b -n 1 | grep Cpu |awk { 'print $8'}|cut -f 1 -d "."` #cpu使用率 cpu_use=`expr 100 - $cpu_idle` echo "$now 當前的cpu使用率爲 $cpu_use" >> /linuxTest/cpu.log if [[ $cpu_use -gt $cpu_warn ]]; then echo "cpu報警" >> /linuxTest/cpu.log #這裏的文件類型要寫成絕對路徑,要否則定時任務會不生效 else echo "cpu使用正常" >> /linuxTest/cpu.log fi } #----mem內存 function item_mem(){ mem_free=`free -m |grep "Mem"| awk { 'print $4+$6'}` echo "$now 當前內存剩餘空間爲 $mem_freeMB" >> /linuxTest/mem.log if [[ $mem_free -lt $mem_warn ]]; then echo "mem報警" >> /linuxTest/mem.log else echo "mem使用正常" >> /linuxTest/mem.log fi } #----disk磁盤 function item_disk(){ disk_use=`df -P | grep /dev | grep -v -E '(tmp|boot)' | awk '{print $5}' | cut -f 1 -d "%"` echo "$now 當前磁盤使用率爲 $disk_use %" >> /linuxTest/disk.log if [[ $disk_use -gt $disk_warn ]]; then echo "disk報警" >> /linuxTest/disk.log else echo "disk使用正常" >> /linuxTest/disk.log fi } item_cpu item_disk item_mem
寫完shell腳本以後就想這跑個定時任務shell
命令是:crontab -e
而後就會進入到定時任務的編寫中(有關定時任務的參數能夠本身百度)
我寫了一個每分鐘都執行的測試案例
命令是:* * * * * /linuxTest/cpuWatch.sh
bash
而後寫完命令後重啓crond的服務,發現這個定時任務一直都沒有跑起來,去查了一下資料後,設置了幾個參數
1.首先 tail -100f /var/log/messages 查看系統運行的日誌,發現了
crond: sendmail: fatal: parameter inet_interfaces: no local interface found for ::1,解決完這個問題後,仍是沒有跑起來
2.而後把日誌的文件路徑寫成了絕對路徑後,就能夠跑起來了
測試
嘿嘿,解決問題的感受仍是很爽的!雖然是個小問題,但是這種成就感仍是很好的ui