2016-10-04 50 views
-4

我已經寫了一些ksh腳本,大約有6個腳本,每個大約有50行,只有一行是300行。 這是寫入來處理巨大的數據文件,如207 MB大。在運行腳本時,它有時會卡住並且不會結束。 需要人爲中斷。 在生產環境中,我希望它自動運行,並且應該能夠在沒有任何人爲干擾的情況下自動結束。 如果文件有問題,腳本必須結束並開始執行下一個文件。 如何使它自行終止,如果它卡住了,即它必須卡住。如何解決一個ksh腳本如果有任何問題?

+1

簡單:修正腳本中的錯誤! – John3136

+0

的確,我已經這麼做了..但是有時候可能會有意想不到的事情發生。我無法預見每一個問題。有什麼辦法嗎? – user6613676

+0

你是否想要某種超時的命令?如果它需要太長時間? – chepner

回答

0

我認爲,你看到問題的唯一方法是腳本花費太長時間。在這種情況下,一個超時後終止進程一個簡單的腳本應該足夠了:

#!/bin/bash 
# Killersrcipt 
PID=$1 
TIME=$2 

typeset -i i 
i=0 

while [ $i -lt $TIME ] ; do 
    if ps $PID > /dev/null ; then 
     i=$i+1 
     sleep 1 
    else 
     exit 0 
    fi 
done 

kill $PID 

您的工作流程將隨後是這樣的:

#!/bin/bash 
process_1 & 
killerscript $! 60 
process_2 & 
killerscript $! 30 
... 

如果您有其他的方法來檢測問題你的流程,你可以輕鬆地將它們添加到你的腳本循環中。