Estoy tratando de descubrir cómo crear un comando llamado runbg
que 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 .sreenrc
embargo, 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
.screenrc
archivo 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 \;