¿Cómo puedo ejecutar un comando después de X segundos sin dormir? ¿O con el sueño pero sin el caparazón solo espera la respuesta de ese comando?
Usé esto pero no funcionó
sleep 5 ; ls > a.txt
Necesito ejecutarlo en segundo plano. Intento no tener que ejecutarlo en un script que intento ejecutar ls
después de 5 segundos, y Shell no solo espera el final del sueño
command-line
shell
sleep
Martín
fuente
fuente
;
?Respuestas:
Una forma más concisa de escribir lo que Hennes sugirió es
Alternativamente, si necesita más de unos segundos, puede usar
at
. Hay tres formas de dar un comando aat
:Tubería:
Guarde el comando que desea ejecutar en un archivo de texto y luego pase ese archivo a
at
:También puede pasar
at
comandos desde STDIN:Luego, presione CtrlDpara salir del
at
caparazón. Ells
comando se ejecutará en un minuto.Puede dar tiempos muy precisos en el formato de
[[CC]YY]MMDDhhmm[.ss]
, como enEsto ejecutará el script
script.sh
a las 21:34 y 12 segundos el 18 de diciembre de 2014. Por lo tanto, en teoría, podríaat
ejecutar algo cinco segundos en el futuro. Sin embargo, eso es como usar un tanque para aplastar una mosca, y la sugerencia de Hennes es mejor.fuente
$(sleep 5; echo foo) &
No estoy seguro de por qué pensé que necesitaba un $ delante de eso, pero con mi sintaxis incorrecta, publiqué la versión más larga (y más comprensible). (command_for_in_new_shell) es más corto sin embargo.at
con un retraso en segundos?at 21:43
) si eso es lo que desea, o simplemente haga algo simple comosleep 4 && command
corrercommand
después de 4 segundos.Puede solucionarlo iniciando un shell o un script en segundo plano.
Ejemplo:
fuente