我在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
我也尝试过&& instread of; 但这无济于事。实际上,该命令根本不会触发!
我当然可以将延迟放置在随后从crontab中调用的脚本中,但这不能解释我的问题,也不能使我学习:-)
如果有什么不同,那就是Debian Lenny。
/bin/sh
这不是一个实际的shell,仅仅是到Debian上sysadmin的首选shell(通常是bash或dash)的符号链接。