Intereting Posts
Как размножить файл данных с другим файлом данных индекса? после сбоя fs и запуска fsck некоторые файлы были восстановлены, но не помещены в lost + found? Linux эквивалентен удалению PowerShell «один ко многим» что означает * – * – c – * – * – * значение в настройке шрифта ошибка в сценарии count для числа вхождений Получение ошибочной опции «-asroot» на пакетах Можно ли использовать gcc для компиляции двоичных файлов в FreeBSD 10? CentOS 7.1.1503 Минимальное значение не может установить Gnome Desktop через yum groupinstall "GNOME Desktop" Как grep все xml-файлы, которые не начинаются с "<" Как GnuPG выводит на консоль, в то время как stdout и stderr перенаправляются на / dev / null Отображение контекстного меню с использованием сценария оболочки Командная подсистема Bash с переменной окружением multiseat, можно ли получить доступ к виртуальным терминалам на любом месте? Как указать владельца группы во время Cron Минимизировать зарезервированное пространство на томе ext4 без больших файлов

Как выполнить команду случайным образом в течение заданного интервала времени?

Меня интересует запуск команды Unix случайным образом за определенный промежуток времени.

Например, если команда ls и мой интервал времени между полуднем и 2pm, как я могу запустить фоновый процесс, который будет запускать ls в фоновом режиме, случайным образом, между полуднем и 2pm?

Самый простой способ – использовать команду at . Поскольку с позволяет использовать timepec, вы можете использовать его следующим образом:

 at 12:00 PM tomorrow + 30 minutes 

Поэтому в вашем случае вы хотели бы использовать что-то вроде этого:

 at 12:00 PM tomorrow + $(($RANDOM % 120)) minutes 

После ввода этой команды вы можете ввести свои команды, например ls и закончить с помощью ctrl + d

Если вы не знакомы с командой at, прочитайте этот учебник .

Для ваших целей вы программируете crontab за полдень, а затем сбрасываете случайный интервал между 0 и 120 секундами (два часа).

Таким образом, линия crontab для ежедневной работы в полдень:

 * 12 * * * command.sh 

а затем вы запустите command.sh с:

 sleep $(( RANDOM % (120*60) )) 

альтернатива делает:

 at noon + $(( RANDOM % 120 )) minutes tomorrow 

в начале скрипта каждый день. Излишне говорить, что последнее это не лучшая из идей, поскольку она неизбежно терпит неудачу с течением времени.