Cómo ejecutar múltiples comandos en Bash, algunos en segundo plano

Cómo ejecutar múltiples comandos en Bash, algunos en segundo plano

Me gustaría ejecutar varios comandos en bash, pero algunos de ellos se ejecutan en segundo plano. La mejor manera de explicar esto es usando el siguiente comando que no funciona...

for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand

Supongo que esto podría tomarse como dos preguntas:

  1. ¿Cómo terminar el & en un comando?
  2. ¿Cuál sería una mejor manera de hacer esto?

Otros detalles si son importantes:

  • Uso abierto 13.2
  • gnomo-shell

Respuesta1

Deberías intentarlo

(sleep 5; ls) &  echo "Now"

Esto funciona como usted desea.

Respuesta2

Todo lo que necesitas hacer es eliminar el ;. &actúa como un separador de comandos por sí mismo, por lo que agregar ;después de eso no es válido.

(sleep 30; command1; command2 param ) & anotherCommand

(Los espacios después del punto y coma no son necesarios, simplemente me resulta más fácil leerlos de esta manera. Este es uno de los pocos lugares donde los espacios son opcionales en la sintaxis del shell; en la mayoría de los lugares, son obligatorios o prohibidos).

En cuanto a mejores formas de hacer esto... eso realmente depende exactamente de lo que estás tratando de hacer. Necesitaríamos más información para hacer mejores sugerencias.

información relacionada