1

スリープ状態になった perl スクリプトを手動で起動できるかどうか疑問に思っていました。基本的に、何かを実行した後、たとえば 1 時間スクリプトをスリープ状態に設定し、10 分後に再度実行したいことに気付きます。

私が実行しているプラ​​ットフォームは tcsh シェルを備えた Linux です。

繰り返しますが、助けてくれてありがとう

4

1 に答える 1

5

多くのシステムでは、 のようなシステム コールsleepをシグナルで中断できます。このような中断でsleepは、実際にスリープして設定した秒数を返し$!ます。もちろん、スクリプトを続行できるようにするシグナルを使用する必要があります。特定のシグナル ハンドラを設定していない場合は、 と の組み合わせでSIGSTOPSIGCONTうまくいきます。

例:

$ perl -e 'print "slept for ", sleep 1000, " seconds.\n";' &
[2] 6220
$ kill -STOP 6220
$ kill -CONT 6220
slept for 8 seconds[2]+  Stopped     perl -e ...

別の例 (自明なSIGUSR1ハンドラー):

$ perl -e '$SIG{USR1}=sub{}; print "slept for ", sleep 1000, "s.\n"' &
[1] 2419
$ kill -USR1 2419
slept for 4s
于 2012-08-11T01:33:29.093 に答える