linux設置程序運行超時時間

在某些狀況下,咱們須要限制程序的運行時間(好比cronjob等),這裏簡單介紹下使用信號及timeout的實現方法bash

1. 假若有以下代碼(test_timout.sh):spa

#!/bin/bash

while true
    do
    echo -n "Current date: "
    date
    sleep 1
done

一旦運行後(bash test_timout.sh),就沒法自行終止;若是在代碼中有bug,致使程序沒法正常終止,那麼機器的資源就得不到釋放(若是是cronjob的話,資源佔用就會愈來愈多),所以在這種狀況下,咱們須要設置程序的運行時間;經過信號和timeout命令的實現以下blog

2. 讓上面的代碼在3秒後字段退出的解決方案以下:資源

   1)修改上面的代碼(test_timout.sh),使其能在捕捉信號後退出it

#!/bin/bash

trap "echo received a interrupt signal; exit 1" SIGINT 
while true
    do
    echo -n "Current date: "
    date
    sleep 1
done

  2)運行命令由bash test_timout.sh改成timeout -s SIGINT 3 bash test_timout.sh;這樣在3秒後,程序就會自動退出class

相關文章
相關標籤/搜索