4

私はこのスクリプトを持っています:

FINISH=0;
trap 'FINISH=1' SIGINT

INTERVAL=100;

while true
do
    START=`date +%s`;
    php-cgi -f process.php;
    STOP=`date +%s`;
    ELAPSED=$(($STOP-$START));
    SLEEP=$(($INTERVAL-$ELAPSED));
    if [ $SLEEP -gt 0 ]
    then
        echo "sleeping for $SLEEP seconds";
        sleep $SLEEP;
    fi
    if [ $FINISH -eq 1 ]
    then
        echo "exit";
        break;
    fi
done

しかし、それは私が望むようには機能しません-FINISH = 1を設定したいのですが、現在実行されているコマンド(php-cgiまたはsleep)を強制終了します-これを回避するにはどうすればよいですか? 実際、php-cgiを殺してほしくない...

4

1 に答える 1

2

これはあなたのために働くかもしれません。

#!/bin/bash
trap 'exit' SIGINT

interval=100;

while true
do
    start=$(date +%s)
    nohup php-cgi -f process.php
    stop=$(date +%s)
    ((elapsed = stop - start))
    ((sleep = interval - elapsed))
    if (( sleep > 0 ))
    then
        echo "sleeping for $sleep seconds"
        sleep "$sleep"
    fi
done
于 2012-05-29T18:49:52.620 に答える