作者 主題: script異常  (閱讀 3042 次)

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

sidney

  • 憂鬱的高中生
  • ***
  • 文章數: 122
    • 檢視個人資料
script異常
« 於: 2009-12-05 00:13 »
我撰寫一個簡單的計算nfs connect & samba的connect數量(在同一個script中),並把它導到一個文字檔,
現在問題來了,我手動執行這一個script檔可以正常執行,並且可以導到文字檔中,都是有數字(connect)的哦!
但我把它寫到crontab中,執行出來的結果,samba可以得到正確的數量,nfs算出來的都是0,為什麼會這樣?


權限我都檢查過了,都可以執行。
os:suse Linux

gwstudy

  • 活潑的大學生
  • ***
  • 文章數: 205
    • 檢視個人資料
回覆: script異常
« 回覆 #1 於: 2009-12-05 02:05 »
大家來猜猜看,樓主 script 怎麼寫的,猜到有獎 :) 我想應該不可能猜到吧。

sidney

  • 憂鬱的高中生
  • ***
  • 文章數: 122
    • 檢視個人資料
回覆: script異常
« 回覆 #2 於: 2009-12-05 13:58 »
我的script
showmount | wc -l > /root/nfs.txt

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: script異常
« 回覆 #3 於: 2009-12-05 14:54 »
我的script
showmount | wc -l > /root/nfs.txt

你 script 完整檔案內容?你有無使用 #! 這類指定呼叫的 shell 程式?
I am kenduest - 小州

my website: http://kenduest.sayya.org/

sidney

  • 憂鬱的高中生
  • ***
  • 文章數: 122
    • 檢視個人資料
回覆: script異常
« 回覆 #4 於: 2009-12-07 19:32 »
沒有呼叫其他的程式。
Script內容如下:

day=`date +%Y%m%d%T`
history="/T2/cim/log/efs/history"
date | cut -c5-20 > /T2/cim/log/efs/tmp/efs_date.txt
df /T2 --block-size=m | grep /T2 | cut -c33-39 > /T2/cim/log/efs/tmp/efs_size.txt
net status sessions | wc -l > /T2/cim/log/efs/tmp/netsession.txt
net status sessions > $history/all/all-$day.txt

net status shares | wc -l > /T2/cim/log/efs/tmp/netshares.txt
net status sessions | grep "172.20.5" | wc -l > /T2/cim/log/efs/tmp/cell.txt
net status sessions | grep "172.20.5" > $history/cell/cell-$day.txt

#i=$(net status sessions | grep "172.20.8" | wc -l);
#if [ "$i" -gt "1000000" ]; then  #-lt-> >, -gt-> <
#mail -s "EFSConnect 172.20.8" shinchuan@fab.com < /etc/hosts;
#touch $history/test1.txt
#else
#echo test;
#touch $history/failt1.txt
#fi
net status sessions | grep "172.20.3" | wc -l >  /T2/cim/log/efs/tmp/cf.txt
net status sessions | grep "172.20.3" > $history/cf/cf-$day.txt
net status sessions | grep "172.20.1" | wc -l >  /T2/cim/log/efs/tmp/array.txt
net status sessions | grep "172.20.1" > $history/array/array-$day.txt
net status sessions | grep "172.20.7" | wc -l >  /T2/cim/log/efs/tmp/server1.txt
net status sessions | grep "172.20.7" > $history/server/server7-$day.txt
net status sessions | grep "172.20.8" | wc -l >  /T2/cim/log/efs/tmp/server2.txt
net status sessions | grep "172.20.8" > $history/server/server8-$day.txt
net status sessions | grep "10.56" | wc -l > /T2/cim/log/efs/tmp/oa.txt
net status sessions | grep "10.56"  > $history/other/oa-$day.txt
net status sessions | grep "192.168" | wc -l > /T2/cim/log/efs/tmp/other.txt
net status sessions | grep "192.168" >$history/other/other-$day.txt;


i=$(net status sessions | wc -l);
if [ "$i" -gt "400" ]; then  #-lt-> >, -gt-> <
mail -s "EFSConnect heigher 400" shinchuan@fab.com< $history/server/server8-$day.txt;
fi

sleep 1;
showmount | wc -l > /T2/cim/log/efs/tmp/nfs.txt;
showmount > $history/nfs/$day.txt


paste -d"," /T2/cim/log/efs/tmp/efs_date.txt /T2/cim/log/efs/tmp/efs_size.txt /T                                                                             2/cim/log/efs/tmp/netshares.txt /T2/cim/log/efs/tmp/netsession.txt /T2/cim/log/e                                                                             fs/tmp/array.txt /T2/cim/log/efs/tmp/cf.txt /T2/cim/log/efs/tmp/cell.txt /T2/cim/log/efs/tmp/server1.txt /T2/cim/log/efs/tmp/server2.txt /T2/cim/log/efs/tmp/oa.txt /T2/cim/log/efs/tmp/other.txt /T2/cim/log/efs/tmp/nfs.txt >> /T2/cim/log/efs/efs_status_4F.csv

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: script異常
« 回覆 #5 於: 2009-12-07 20:22 »

你第一行有寫 #!/bin/bash 嗎?
I am kenduest - 小州

my website: http://kenduest.sayya.org/

sidney

  • 憂鬱的高中生
  • ***
  • 文章數: 122
    • 檢視個人資料
回覆: script異常
« 回覆 #6 於: 2009-12-09 15:56 »
沒有,一定要加這一個嗎?
你第一行有寫 #!/bin/bash 嗎?

這個是什麼意思呢?
謝謝。

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: script異常
« 回覆 #7 於: 2009-12-09 17:42 »
沒有,一定要加這一個嗎?
你第一行有寫 #!/bin/bash 嗎?

這個是什麼意思呢?
謝謝。

啊~ 好基本的問題。

只要是 script,都要在第一行使用 #! 接上要呼叫執行處理的程式,這樣讓系統才可以識別該 script 到底要請那個程式讀入執行。

你的 script 沒這樣寫,在 shell 下可以執行那是因為 shell 用猜的。但是你要用排程執行,crond 用的是 exec() 系統呼叫,它看不懂你檔案格式,當然不會正確執行。

I am kenduest - 小州

my website: http://kenduest.sayya.org/