作者 主題: shell script 放入crontab不會自動執行...  (閱讀 3220 次)

0 會員 與 1 訪客 正在閱讀本文。

rick0618

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
小弟我自己寫了之shell script 結果放入crontab內不會自動跑..
環境是 Ubuntu 8.04 LTS server
============以下是我的script=============
###linux.sh###
#!/bin/bash
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
DATE=`/bin/date`
IP=192.168.1.13
### CPU Loading ###
LOG=`/usr/bin/snmpget -v 1 -c "public" $IP .1.3.6.1.4.1.2021.10.1.3.1 | awk '{print $4}'`
len=${#LOG}
substr=${LOG:2:3}
LOGS=$substr
if  [ "$LOGS" -le "20" ]; then
        echo "CpuLoading: $DATE $IP CPU_LOADING: $LOGS% LOADING_LEVEL=1 " >> linux_cpuloading.log
elif [ "$LOGS" -gt "20" ] && [ "$LOGS" -le "40" ]; then
        echo "CpuLoading: $DATE $IP CPU_LOADING: $LOGS% LOADING_LEVEL=2" >> linux_cpuloading.log
elif [ "$LOGS" -gt "40" ] && [ "$LOGS" -le "60" ]; then
        echo "CpuLoading: $DATE $IP CPU_LOADING: $LOGS% LOADING_LEVEL=3" >> linux_cpuloading.log
elif [ "$LOGS" -gt "60" ] && [ "$LOGS" -le "80" ]; then
        echo "CpuLoading: $DATE $IP CPU_LOADING: $LOGS% LOADING_LEVEL=4" >> linux_cpuloading.log
else    echo "CpuLoading: $DATE $IP CPU_LOADING: $LOGS% LOADING_LEVEL=5" >> linux_cpuloading.log
fi
### SUM the all memory used ###
LOG=`/usr/bin/snmpwalk -c "public" -v 1 $IP  | grep hrSWRunPerfMem  | awk '{sum += $4} END {print sum}'`
echo "MemoryUsed: $DATE $IP TOTAL_USING_RAM: $LOG KBytes" >> linux_memused.log
### write running process & used memory to file_process file_mem_use ###
rm /var/system_log/linux/process/file_mem_us
rm /var/system_log/linux/process/file_process
echo >> /var/system_log/linux/process/file_mem_use
echo >> /var/system_log/linux/process/file_process
echo `/usr/bin/snmpwalk -c "public" -v 1 $IP  | grep "hrSWRunPerfMem" >> /var/system_log/linux/process/file_mem_use`
echo `/usr/bin/snmpwalk -c "public" -v 1 $IP  | grep "hrSWRunName" >> /var/system_log/linux/process/file_process
### read file_process and write to file_pro ###
cat /var/system_log/linux/process/file_process | while read line
do
  awk '{ print $4,$5,$6 }' > /var/system_log/linux/process/file_pro
done
### read file_mem_use , then write to file_mem ###
cat /var/system_log/linux/process/file_mem_use | while read line
do
  awk '{ print $4,$5 }' > /var/system_log/linux/process/file_mem
done
### marage file_pro and file_mem ###
paste /var/system_log/linux/process/file_pro /var/system_log/linux/process/file_mem > linux_process.log
=======================以上是我的script=====================
/etc/crontab 設定為:
* * * * * root /var/system_log/linux.sh

這樣執行的結果就是....什麼都沒執行...囧rz
還請各位大大幫小弟我瞧瞧哪裡出了問題...感恩!
« 上次編輯: 2009-11-25 10:08 由 rick0618 »

rick0618

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
回覆: shell script 放入crontab不會自動執行...
« 回覆 #1 於: 2009-11-25 11:22 »
剛剛發現一件事情,
==============================================================
### write running process & used memory to file_process file_mem_use ###
rm /var/system_log/linux/process/file_mem_us
rm /var/system_log/linux/process/file_process
echo >> /var/system_log/linux/process/file_mem_use
echo >> /var/system_log/linux/process/file_process
echo `/usr/bin/snmpwalk -c "public" -v 1 $IP  | grep "hrSWRunPerfMem" >> /var/system_log/linux/process/file_mem_use`
echo `/usr/bin/snmpwalk -c "public" -v 1 $IP  | grep "hrSWRunName" >> /var/system_log/linux/process/file_process
### read file_process and write to file_pro ###
cat /var/system_log/linux/process/file_process | while read line
do
  awk '{ print $4,$5,$6 }' > /var/system_log/linux/process/file_pro
done
### read file_mem_use , then write to file_mem ###
cat /var/system_log/linux/process/file_mem_use | while read line
do
  awk '{ print $4,$5 }' > /var/system_log/linux/process/file_mem
done
===================================================================
在同一支sh裡面,上面列出部分的code有被執行到,其餘部分則沒有,
有沒有執行到,我是以輸出檔案來看的...囧rz

gwstudy

  • 活潑的大學生
  • ***
  • 文章數: 205
    • 檢視個人資料
回覆: shell script 放入crontab不會自動執行...
« 回覆 #2 於: 2009-11-25 12:34 »
有沒有被執行到,很好查的。我建議這種事自己查,然後把其中一兩個你認為沒被執行的指令寫出來給大家看比較好.

gwstudy

  • 活潑的大學生
  • ***
  • 文章數: 205
    • 檢視個人資料
回覆: shell script 放入crontab不會自動執行...
« 回覆 #3 於: 2009-11-25 12:38 »
把有執行的刪掉,只留你認為沒執行的,然後加上一些 echo 指令看看執行過程是不是你預期的。