¿Ejecutar tareas en segundo plano mediante programación en una pantalla dividida?

¿Ejecutar tareas en segundo plano mediante programación en una pantalla dividida?

Estoy tratando de descubrir cómo crear un comando llamado runbgque acepte subcomandos para ejecutarse en segundo plano y crear una pantalla dividida para cada subcomando. Cuando un subcomando se completa correctamente, la pantalla dividida se cierra; Si falla un subcomando, la pantalla permanece abierta con el error hasta que el usuario cierra la pantalla con la señal de finalización. Una vez que se cierran todas las pantallas, el comando se completa y la ejecución continúa. P.ej

runbg "ping -t 5 google.com" "ping -t 10 microsoft.com"
echo "done"

He descubierto que puedo hacer:

ping -t 5 google.com &
ping -t 10 microsoft.com &
wait

Lo que logra el lado paralelo de las cosas, sin embargo, cada comando envía todo al mismo terminal, lo cual es muy ruidoso. De ahí el deseo de una configuración de pantalla dividida.

Buscando aquí he descubiertoPantalla GNUque parece manejar el lado de la pantalla, pero parece que requiere un archivo .screenrc, que si bien es posible hacerlo mediante programación, es un poco molesto, ya que me imagino que significaría que necesitaría escribir un archivo tmp aleatorio en alguna parte. .

encontréesta respuestaque incluye el uso de la pantalla sin .sreenrcembargo, no puedo entender cómo hacer las cosas de la pantalla dividida en ella.

En resumen:

  • ¿Hay algo que ya tenga la funcionalidad que busco runbg?
  • Si no, ¿es GNU Screen lo que quiero para esto? ¿Necesito usar un .screenrcarchivo o hay alguna manera de realizar las pantallas divididas sin uno?

Respuesta1

Puedes hacerlo con tmux uniendo las claves de ventana dividida y de envío de esta manera:

tmux new session \; split-window -v \; send-keys 'ping -t 5 google.com' C-m \; split-window -h \; send-keys 'ping -t 10 microsoft.com' C-m \;

información relacionada