2014-01-07 105 views
0

我正在運行耗時數小時的bash腳本。我想知道是否有辦法監視它在做什麼?比如腳本當前正在運行的部分,運行整個腳本需要多長時間,腳本停止工作的哪一行崩潰等等,我只想從腳本接收反饋。謝謝!!!如何監視bash腳本?

+1

您可以在第一行加上'-x',就像這樣:!'#/斌/慶典-ex'。當一個命令退出並出錯時,'-e'會立即退出。 – janos

+1

也可以使用-v代替-x來獲得較少的混亂輸出 – damienfrancois

+0

您的腳本是否包含'echo'或'printf'語句?如果沒有,上述評論應該會對你有所幫助。如果是這樣,並且因爲腳本在後臺運行而看不到它們,則解決方案會有所不同。請說清楚你的問題是哪種情況。 – damienfrancois

回答

1

從bash的手冊頁,

set -x 
After expanding each simple command, for command, case command, select command, or arithmetic for command, display the expanded value of PS4, followed by the command and its expanded arguments or associated word list. 

將這些添加到腳本的開頭,

export PS4='+{${BASH_SOURCE}:$LINENO} ' 
set -x 

例,

#!/bin/bash   

export PS4='+{${BASH_SOURCE}:$LINENO} ' 
set -x 

echo Hello World 

結果,

+{helloworld.sh:6} echo Hello World 
Hello World 
1

創建一個狀態或日誌文件。例如添加這個腳本里面:

echo $(date) - Ok >> script.log 

或者一個真正的監視,你可以在Linux上使用strace瞧系統調用,例如:

$ while true ; do sleep 5 ; done & 
[1] 27190 
$ strace -p 27190