В вашей первой команде, например, если $RANDOM % 100
равно 6, она вызовет /bin/sleep .6s
; Вы хотите /bin/sleep .06s
.
Во второй команде od -An -N1 -t u1 /dev/random
, кажется, печатает число в диапазоне 0..255 - и сама команда может задержаться на длительное время, если /dev/random
исчерпает энтропию. Вместо этого используйте /dev/urandom
.
Я бы написал небольшую программу на C, которая вызывает usleep()
(при условии, что компиляция и развертывание исполняемого файла возможны).
EDIT
Насколько я могу судить, ответ на ваш (обновленный) вопрос - нет.
POSIX не гарантирует / dev / urandom, поэтому ваша команда od не переносима на все системы POSIX. Я не верю, что POSIX определяет любую команду, которая может спать в течение нескольких секунд. Он определяет функцию nanosleep()
, но если вы не можете обязательно развернуть программу на Си, которая не помогает. POSIX awk
не имеет функции сна. Perl не POSIX.
Ваши варианты: (1) спать только целые секунды или (2) использовать непереносимый метод.
В каких условиях вам это нужно?