Как я могу запустить команду после X секунд без сна. Или со сном, но без оболочки, просто дождитесь ответа этой команды?
Я использовал это, но это не сработало
sleep 5 ; ls > a.txt
Мне нужно запустить его в фоновом режиме. Я пытаюсь не запускать его в скрипте, который я пытаюсь запустить ls
через 5 секунд, а оболочка не просто ждет окончания сна
command-line
shell
sleep
Мартин
источник
источник
;
?Ответы:
Более краткий способ написания того, что предложил Хеннес:
Кроме того, если вам нужно больше, чем несколько секунд, вы можете использовать
at
. Есть три способа дать командуat
:Труба это:
Сохраните команду, которую хотите запустить, в текстовом файле, а затем передайте этот файл
at
:Вы также можете передавать
at
команды из STDIN:Затем нажмите CtrlDдля выхода из
at
оболочки. Командаls
будет выполнена через одну минуту.Вы можете дать очень точное время в формате
[[CC]YY]MMDDhhmm[.ss]
, как вЭто запустит сценарий
script.sh
в 21:34 и 12 секунд 18 декабря 2014 года. Таким образом, теоретически, вы можете использоватьat
что-то для запуска через пять секунд в будущем. Однако, это похоже на использование танка, чтобы ударить муху, и предложение Хеннеса лучше.источник
$(sleep 5; echo foo) &
я, я не уверен, почему я думал, что мне нужно $ перед этим, но из-за неправильного синтаксиса я просто опубликовал более длинную (и более понятную) версию. (command_for_in_new_shell) короче, хотя.at
с задержкой в секундах?at 21:43
), если это то, что вы хотите, или просто сделайте что-нибудь простое, например,sleep 4 && command
запуститьcommand
через 4 секунды.Вы можете обойти это, запустив оболочку или скрипт в фоновом режиме.
Пример:
источник