作者 主題: 請問有關linux shell script或cgi的問題  (閱讀 6484 次)

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

supersie

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
請問有關linux shell script或cgi的問題
« 於: 2008-03-18 12:06 »
#!/bin/sh
TMP_FILE="/upgrade.log"
eval `/sbin/upgrade -n > log`
echo upgrade ok > $TMP_FILE

程式中是將upgrade這個執行檔執行完畢後再echo upgrade ok到log檔裡

但不知道為什麼echo upgrade ok > $TMP_FILE這行使終沒執行

不過upgrade這個執行檔執行的時間約為三分鐘,不知道是否執行太久而有被script timeout的可能呢?

而且已經確認過upgrade這個執行檔已經exit出來了,麻煩各位高手指點~~
« 上次編輯: 2008-03-18 12:12 由 supersie »

湯姆貓

  • 活潑的大學生
  • ***
  • 文章數: 475
    • 檢視個人資料
回覆: 請問有關linux shell script或cgi的問題
« 回覆 #1 於: 2008-03-18 13:07 »
shell script不太會,但......
upgrade ok不需要包起來嗎??
echo "upgrade ok"  ??

supersie

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
回覆: 請問有關linux shell script或cgi的問題
« 回覆 #2 於: 2008-03-18 13:09 »
是的,那就像c的printf把字串貼到log檔裡

elleryq

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 908
  • 性別: 男
    • 檢視個人資料
    • Thinking more...
回覆: 請問有關linux shell script或cgi的問題
« 回覆 #3 於: 2008-03-18 14:07 »

有可能~

要不要把 eval `/sbin/upgrade -n > log` 丟到背景跑
然後再加個 loop 去利用 pid 檢查是否還在執行,如果還在執行,就先丟個空白或什麼的出去,讓 http server 以為還在執行~然後再 sleep 一下,重複檢查動作...

等到最後結束時,再作 echo upgrade ok > $TMP_FILE

另外一個驗證的方法是先把eval `/sbin/upgrade -n > log`換成一個比較快執行完畢的指令
然後試試看...
Plan your work, then work your plan.
我的首頁:http://blog.elleryq.idv.tw
351899by http://counter.li.org

supersie

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
回覆: 請問有關linux shell script或cgi的問題
« 回覆 #4 於: 2008-03-19 10:34 »
謝謝你的回答,經實驗證實運作時間太長的執行檔會導致eval後的script無法繼續執行

由於我們所用的執行檔是線上更新rom code,而且有4M,燒flash的動作時間無法縮短~

而且不使用背景執行是因為怕被其它的執行檔干擾update rom code的程序

所以將eval後面的動作通通放在該upgrade執行檔內做掉了~~
« 上次編輯: 2008-03-19 10:37 由 supersie »

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
回覆: 請問有關linux shell script或cgi的問題
« 回覆 #5 於: 2008-03-19 11:41 »
謝謝你的回答,經實驗證實運作時間太長的執行檔會導致eval後的script無法繼續執行

由於我們所用的執行檔是線上更新rom code,而且有4M,燒flash的動作時間無法縮短~

而且不使用背景執行是因為怕被其它的執行檔干擾update rom code的程序

所以將eval後面的動作通通放在該upgrade執行檔內做掉了~~
Timeout 300 需要放大 (以 Apache 而言)

supersie

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
回覆: 請問有關linux shell script或cgi的問題
« 回覆 #6 於: 2008-05-07 13:49 »
謝謝你的回答,經實驗證實運作時間太長的執行檔會導致eval後的script無法繼續執行

由於我們所用的執行檔是線上更新rom code,而且有4M,燒flash的動作時間無法縮短~

而且不使用背景執行是因為怕被其它的執行檔干擾update rom code的程序

所以將eval後面的動作通通放在該upgrade執行檔內做掉了~~
Timeout 300 需要放大 (以 Apache 而言)

不好意思,請問此Timeout要在那裡調呢!!!!