cronの$ RANDOMに奇妙な問題があります。cronjobが起動してからランダムな分数でコマンドを実行したいと思います。
この例は、ターミナルで直接動作し、コマンドを最大30秒遅らせます(コマンドを必要なものに置き換えてください。実際には、/ dev / ttyUSB0へのエコーです)。
sleep `expr $RANDOM \% 30` ; command
同じ行がcrontabに配置されている場合、コマンドは常に遅延なしですぐに実行されます。
* * * * * sleep `expr $RANDOM \% 30` ; command
$ RANDOMなしの式を使用すると、正常に機能します。これにより、15秒の遅延が生じます。
* * * * * sleep `expr 10 + 5` ; command
つまり、$ RANDOMはcronでは機能しないようです。
しかし、これは$ RANDOM自体がゼロに評価されるという単純な理由ではありません。これにより、遅延が10になるはずです。
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
&&も試してみました; しかし、それは役に立ちません。実際、コマンドはまったく実行されません!
もちろん、その後crontabから呼び出されるスクリプトに遅延を設定することもできますが、これは私の問題を説明せず、私に学習させることもありません:-)
それが違いを生むのは、Debian Lennyです。
/bin/sh
たのは、実際のシェルではなく、Debianのsysadminの優先シェル(通常はbashまたはdash)へのシンボリックリンクでした。