Como posso executar um comando após X segundos sem dormir. Ou com o sono, mas sem o shell, basta aguardar a resposta desse comando?
Eu usei isso, mas não funcionou
sleep 5 ; ls > a.txt
Eu preciso executá-lo em segundo plano. Eu tento não ter que executá-lo em um script, eu tento executar ls
após 5 segundos, e o shell não apenas espera pelo fim do sono
command-line
shell
sleep
Martin
fonte
fonte
;
?Respostas:
Uma maneira mais concisa de escrever o que Hennes sugeriu é
Como alternativa, se você precisar de mais de alguns segundos, poderá usar
at
. Existem três maneiras de dar um comando paraat
:Pipe it:
Salve o comando que você deseja executar em um arquivo de texto e passe esse arquivo para
at
:Você também pode passar
at
comandos do STDIN:Em seguida, pressione CtrlDpara sair do
at
shell. Ols
comando será executado em um minuto.Você pode dar tempos muito precisos no formato de
[[CC]YY]MMDDhhmm[.ss]
, como emIsso executará o script
script.sh
às 21:34 e 12 segundos no dia 18 de dezembro de 2014. Portanto, em teoria, você pode usarat
para executar algo cinco segundos no futuro. No entanto, é como usar um tanque para golpear uma mosca, e a sugestão de Hennes é melhor.fonte
$(sleep 5; echo foo) &
não sei por que achava que precisava de um $ antes disso, mas com minha sintaxe errada, acabei de publicar a versão mais longa (e mais compreensível). (command_for_in_new_shell) é mais curto.at
com um atraso em segundos?at 21:43
), se é isso que você deseja, ou apenas faça algo simples comosleep 4 && command
executarcommand
após 4 segundos.Você pode contornar isso iniciando um shell ou um script em segundo plano.
Exemplo:
fonte