48

次のような行を使用して、cron で 5 分ごとに何かを実行できることを知っています。

 */5 * * * * /my/script

12:00、12:05、12:10 ではなく、12:01、12:06、12:11 などに実行したい場合はどうすればよいですか? 私はこれを行うことができると思います:

 1,6,11,16,21,26,31,36,41,46,51,56 * * * * /my/script

……だけど、それは醜い。それを行うよりエレガントな方法はありますか?

4

5 に答える 5

79
1-56/5 * * * * /my/script

これは vixiecron で動作するはずですが、他の実装についてはわかりません。

于 2009-01-22T22:57:48.243 に答える
19

最初のスケジュールを使用します。

*/5 * * * * /my/script

これをスクリプトの先頭に追加します。

sleep 60

(はい、これは冗談です)

于 2009-01-22T22:15:09.873 に答える
-1

最初のパラメーターとしてスリープ期間を取り、スクリプトを残りとして実行する新しいスクリプト「delaystart」を作成します。スクリプトが crontab 行でスクリプトのある行をチェックするようにし、行がコメントアウトされていない場合にのみスクリプトを開始します。これにより再利用が可能になり、実際にはスクリプトが実行されていない場合でも、 ps はスクリプトが実行中であると報告しません。

#!/bin/bash
sleeptime=$1
sleep ${sleeptime}
shift
if ( ! crontab -l | grep -e '#.+delaystart '${sleeptime} $* ) then
  $*
fi
于 2009-09-24T21:32:37.070 に答える
-5

sean.brightのジョークは私に考えさせました...なぜ使用しないのですか...

* * * * * /my/script

...そしてスクリプト内でこれを行います...

#!/bin/bash
export WHEN=`date '+%M'`
echo $WHEN
export DOIT=`echo "$WHEN % 5" | bc` 
echo $DOIT
if [ $DOIT != 0 ] ; then
    echo "ha ha ha"
fi
echo "done"

...応急修理...多分、しかしcrontabと同じくらい醜い...わかりません。

于 2009-01-22T22:34:27.433 に答える