Saya punya masalah aneh dengan $ ACAK di cron. Saya ingin menjalankan perintah beberapa menit secara acak setelah cronjob menyala.
Contoh ini bekerja langsung di terminal dan menunda perintah hingga 30 detik (ganti perintah dengan apa pun yang Anda inginkan, itu sebenarnya sebuah gema ke / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Jika baris yang sama ditempatkan di crontab, perintah selalu langsung aktif tanpa penundaan:
* * * * * sleep `expr $RANDOM \% 30` ; command
Jika saya menggunakan ekspresi tanpa $ RANDOM, itu berfungsi dengan baik - ini membuat penundaan 15 detik:
* * * * * sleep `expr 10 + 5` ; command
Dengan kata lain, sepertinya $ RANDOM tidak berfungsi dalam cron.
Tetapi ini bukan hanya karena $ RANDOM sendiri dievaluasi menjadi nol, karena dengan demikian ini akan memberikan penundaan 10:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
Saya juga telah mencoba dengan && instread of; tapi itu tidak membantu. Bahkan, maka perintahnya tidak menembak sama sekali!
Tentu saja saya dapat menempatkan penundaan dalam sebuah skrip yang kemudian dipanggil dari crontab, tetapi itu tidak menjelaskan masalah saya dan tidak membuat saya belajar :-)
Itu Debian Lenny jika itu membuat perbedaan.
/bin/sh
bukan shell yang sebenarnya, hanya symlink ke shell yang disukai dari sysadmin (biasanya bash atau dash) di Debian.