bash脚本的错误处理

时间:2011-04-04 05:50:58

标签: bash error-handling

bash脚本上的无限循环,我想永远运行,但(我猜)出现问题脚本被杀死了。有没有像try-catch这样的方法,只需继续运行,无条件。

#!/bin/bash


 iteration=0

 for (( ; ; ))
 do
    process_id=`ps -ef | grep java | grep TEST | awk '{print $2}' `
    kill_command='kill -3 '$process_id
    time=`date | awk '{print substr($4,0,5)}' `
    last_write=`ls -l /files/*.txt | awk '{print $8}' `

    if [ "$time" != "$last_write" ]
    then
            $kill_command
            sleep 1

            $kill_command
            sleep 1

            $kill_command
            sleep 1

            /test/show_queue.sh
    fi

    let "iteration+=1"

    if [ "$iteration" == "30" ] 
    then
            let "iteration=0"
            $kill_command
            echo '------------' >> memory_status.log
            date >> memory_status.log
            prstat -n 7 1 1 >>  memory_status.log
            echo '------------' >> memory_status.log
            /test/show_queue.sh
    fi

    sleep 60
   done

1 个答案:

答案 0 :(得分:1)

一种非常简单的方法是使用两个脚本。一个是循环,一个是执行查杀任务:

for (( ; ; ))
do
  DoKillingTask
  rc=$? # <- You get the return code of the script and decide what to do
done

如果它继续被杀,Mikel(评论你的问题)是对的。