¿Cómo ejecutar un programa desde la línea de comando y aún poder trabajar en la línea de comando mientras se ejecuta?

¿Cómo ejecutar un programa desde la línea de comando y aún poder trabajar en la línea de comando mientras se ejecuta?

Supongamos que quiero ejecutar un programa Java, por lo que escribiría

java myProgram

y luego supongamos que imprime algún resultado en la pantalla pero tarda algunas horas en terminar de ejecutarse. Si quiero seguir trabajando en la misma terminal mientras se ejecuta, ¿cuál es el comando que debo usar? Lo intenté & al final y no pareció funcionar.

Respuesta1

Simplemente agregue un &después del comando. Esto hará que el comando se ejecute en segundo plano.

Tenga en cuenta que aún obtendrá el resultado, por lo que es posible que desee redirigir el resultado a /dev/nullalgún archivo de configuración.

Por ejemplo, para redirigir tanto stdout como stderr:

java myProgram > /dev/null 2>&1 &

Respuesta2

Dado que el programa se ejecuta durante mucho tiempo, es posible que desee considerar usarpantalla. Puede ejecutar el programa y luego iniciar otro símbolo del sistema con Control-a Control-c. Puedes hacerlo tantas veces como quieras y trabajar en varias cosas a la vez. Además, incluso si cierra sesión y vuelve a iniciarla más tarde (simplemente no la cierre), puede volver a conectarse a la pantalla y ver cómo funciona. Haga una "pantalla manual" para obtener información.

También existe tmux, que es una herramienta similar, pero necesitarás instalarla.

Respuesta3

Creopantallaresponderá mejor a su pregunta específica, pero parece que su flujo de trabajo se beneficiaría más del uso de pestañas.

Para abrir una nueva pestaña en la terminal, con la terminal seleccionada presionasCtrl+Ty puedes cambiar entre pestañas presionandoCtrl+RePágoCtrl+Av Págpara cambiar entre ellos.

Esto rápidamente se vuelve intuitivo y termina siendo eficiente, ya que puede cambiar rápidamente entre pestañas para verificar programas que se ejecutan durante mucho tiempo, o generar rápidamente más pestañas a medida que ocupa aquellas en las que está trabajando con tareas largas.

información relacionada