ฉันมีปัญหาแปลก ๆ กับ $ RANDOM เป็น cron ฉันต้องการรันคำสั่งโดยการสุ่มจำนวนนาทีหลังจาก cronjob fires
ตัวอย่างนี้ทำงานได้โดยตรงในเทอร์มินัลและชะลอคำสั่งสูงสุด 30 วินาที (แทนที่คำสั่งด้วยสิ่งที่คุณต้องการจริง ๆ แล้วมันคือ echo to / 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
ไม่ได้เป็นเปลือกจริงเพียง symlink ไปยังเปลือกที่ต้องการของดูแลระบบ (ปกติทุบตีหรือเส้นประ) ใน Debian