Byobu vs. GNU Screen vs. tmux: utilidad y transferibilidad de habilidades [cerrado]

95

Hasta ahora he usado Konsole para administrar múltiples sesiones de shell, pero no he probado Byobu , GNU Screen y tmux , que ofrecen un mejor soporte para múltiples shells. Todos comparten una característica principal, que es permitir separar la sesión actual y luego volver a conectarla a esa sesión anterior.

Para ayudarme a elegir una herramienta para aprender, me gustaría saber: ¿en qué se diferencian en los siguientes aspectos?

  1. Características (obviamente)
  2. Proyecto de madurez. No quiero aprender una herramienta que está cambiando demasiado. Las mejoras son bienvenidas, pero no me gustan las sorpresas como la desaparición de funciones.
  3. Curva de aprendizaje
  4. Disponibilidad en diferentes plataformas. Si aprendo una herramienta, me gustaría poder usarla en un servidor FreeBSD, escritorio SuSE o Ubuntu.
  5. Compatibilidad con otros programas de shell interactivos. ¿Puedo seguir usando vimy emacs -nw(modo sin ventana o modo de texto) de la misma manera que estoy acostumbrado? ¿Los atajos de teclado entrarán en conflicto con los de otras herramientas?

Acabo de probarlos todos y Byobu parece una especie de interfaz para GNU Screen y tmux. Entonces, ¿por qué alguien creó Byobu en lugar de contribuir al proyecto de pantalla GNU y agregar nuevas características? ¿Por qué Byobu no es una especie de modo de interfaz avanzada en la pantalla GNU? Si uso Byobu como mi herramienta diaria con la pantalla GNU como back-end, ¿puedo transferir este conocimiento para usar la pantalla GNU sin Byobu si una máquina determinada solo tiene pantalla GNU?

Keitai
fuente
1
Comentando mi propia pregunta. Después de publicar, acabo de ver la cantidad de veces que se utilizó cada etiqueta en StackExchange: gnu-screen: 199 veces tmux: 125 veces byobu: 18 veces ¿Eso significa que byobu todavía no es popular? ¿O que byobu es tan intuitivo que nadie tiene dudas sobre cómo usarlo?
Keitai
1
Porque byobues solo una bifurcación screencon características adicionales, por lo que se gnu-screenaplica la etiqueta.
Grawity
2
De acuerdo con la documentación ( manpages.ubuntu.com/manpages/precise/en/man1/byobu.1.html ), la configuración predeterminada de Byobu es utilizar tmux como backend predeterminado. Si byobu es una bifurcación de la pantalla gnu, ¿eso significa que tmux es mejor que la pantalla gnu?
Keitai
1
Interesante, no sabía que ahora es compatible con tmux, aunque sigue siendo solo un script de contenedor, aparentemente ni siquiera un tenedor. Pero sí, tmux es en algunos aspectos mejor que Screen (al menos sus preguntas frecuentes lo afirman).
Grawity
22
¡Byobu no es un tenedor de nada! Es una capa en la parte superior de Screen y Tmux, similar a Gnome / KDE siendo una capa en la parte superior de Xorg.
Dustin Kirkland

Respuestas:

32

Para Tmux vs GNU Screen, lea

y varias otras encarnaciones de comparación que se pueden encontrar en blogs y demás.

Algunos términos generales que a menudo se repiten:

  • Tmux es más nuevo. Esto significa que es un poco más elegante (división vertical simple, bonitas líneas verdes) y un poco menos probado para, por ejemplo, compatibilidad (hasta un punto insignificante según sus defensores).
  • Tmux es más ágil en recursos.
  • GNU Screen se encuentra en todas partes y probablemente todavía sea más utilizado.

Aparte de esto, uno puede ver funciones específicas para una u otra alternativa, y la preferencia personal dominará la discusión. Personalmente solía usar GNU Screen en gran medida, ahora uso Tmux.

No he encontrado que Byobu tenga ninguna "característica asesina" para mí. Proporciona una abstracción donde creo que no es necesaria para mis casos de uso.


Otra forma de verlo es notar que Byobu puede usar GNU Screen o Tmux como backend, lo que muestra que las diferencias con un POV de usuario son en su mayoría superficiales.

Daniel Andersson
fuente
268

Gran pregunta! Por lo que vale, soy el autor y mantenedor de Byobu .

Byobu es una capa de configuración, originalmente escrita para sentarse en la parte superior de la pantalla GNU , pero ahora también funciona en la parte superior de Tmux .

Comencé a escribir Byobu en diciembre de 2008 , cuando me encontré con un grupo de usuarios de Screen y Ubuntu Server en Googleplex y descubrí que todos manteníamos nuestro propio montón de trucos útiles / divertidos / útiles en nuestras ~/.screenrcconfiguraciones. Y tuvimos que moverlos manualmente entre las docenas o cientos de servidores que usamos. Comenzamos a intercambiar consejos y trucos, y comencé a recopilarlos en el proyecto GPLv3 original llamado "perfiles de pantalla". Aproximadamente 6 meses después, toda una comunidad se había desarrollado en torno a los " perfiles de pantalla " y el proyecto se convirtió en mucho más que simples ataques de pantalla: teníamos utilidades de configuración, complementos de estado en vivo y combinaciones de teclas. Entonces cambiamos el nombre del proyecto "Byobu", que es una palabra japonesa para esas "pantallas" plegables y elegantes, tiene el beneficio adicional de poder buscar en Google con más éxito "Byobu $ FOO" que "Screen $ FOO".

Con Byobu ahora en la mayoría de las distribuciones de Linux ( Ubuntu , Debian , Fedora , Arch ), y funcional en la mayoría de las Macs / BSD y otros UNIX, proporciona la misma apariencia, combinaciones de teclas convenientes, información dinámica del estado del sistema en cualquier terminal que pueda Necesito acceder.

¿Por qué no contribuir de nuevo al proyecto GNU Screen? Un par de razones ... Todo lo que Byobu funciona tan bien como las opciones de configuración. Nada de esto necesita ser incluido en la base de la fuente de la Pantalla para ser funcional. Algunas cosas podrían funcionar mejor o funcionar mejor si Screen las incluye de manera predeterminada, pero muchos de los cambios son muy "obstinados", que generalmente son difíciles o imposibles de contribuir a un proyecto ascendente de 25 años . Además, el proyecto GNU Screen se mueve muy lentamente, si es que lo hace. Tiene más de 25 años y no ha tenido un lanzamiento oficial desde agosto de 2008 . Cada distribución lleva enormes pilas de parches solo para mantener su / usr / bin / screen funcionando y seguro. por ejemplo, Ubuntu y Debian actualmente llevan 19K líneas de código en ~ 48parches .

¡Aprendí de Tmux hace aproximadamente 2 años y realmente me enamoré del código fuente, el diseño, la interfaz y la comunidad activa! Me ha sido mucho más fácil contribuir con soluciones para Tmux y discutir temas en la lista de correo. Y como usuario de Byobu que lo usa en todas partes, quería que mis sesiones de Tmux tuvieran el mismo aspecto que lo que había disfrutado en más de 4 años de Byobu. Así que porté todo el código de Byobu para que funcione igualmente bien con Tmux como backend, como Screen. A partir de la versión 5.0 de Byobu , Tmux ahora es el backend predeterminado, con Screen todavía compatible en modo heredado. Byobu ahora aprovecha muchas de las características modernas de Tmux sobre pantalla, incluyendo soporte mejorado de 256 colores, caracteres UTF8 y división de ventanas horizontal / vertical.

Si está satisfecho con la configuración predeterminada en Screen o Tmux, o desea escribir sus propios archivos de configuración desde cero, entonces, por supuesto, Screen y Tmux son utilidades fantásticas que han agregado muchos años de eficiencia a nuestras vidas. Si está interesado en un conjunto de configuraciones que realmente amplían y amplían lo que Screen y Tmux hacen de fábrica, ¡eche un vistazo a Byobu!

Saludos, Dustin

Dustin Kirkland
fuente
16
Buena explicación. Es sorprendente que la pantalla esté tan parcheada: ¿necesita un nuevo mantenedor o algo así? Y byobu es genial, gracias.
nealmcb
10
Desearía poder votar dos veces. He estado usando byobu durante años y solo recientemente me enteré de la complejidad de la que me ha estado ocultando todo este tiempo.
Jamie Cook
2
Siempre uso CTRL+` as escape. With screen` y tmuxesto funciona de maravilla , pero no con byobu(Debian 7.1 Wheezy).
Tino
1
Ahora que screentiene un nuevo responsable y el desarrollo parece haberse acelerado, ¿cambian las cosas?
Muru
¿No podrían esos valores predeterminados obstinados convertirlo en el proyecto tmux más joven? Parece que a la respuesta le falta un párrafo "¿Por qué no contribuir de nuevo al proyecto tmux?" xkcd.com/927
user2707671
12

Desde un caso de uso real, la mayor diferencia entre screeny tmuxes cómo manejan las ventanas divididas.

Una ventana en screenes un solo pseudo-terminal. Cuando se adjunta a una screensesión, puede dividir su terminal en varias regiones, cada una de las cuales puede mostrar una screenventana. Múltiples regiones pueden mostrar la misma ventana. Las divisiones no son parte de la sesión; si se separa, sus divisiones se han ido.

Una ventana tmuxconsta de uno o más pseudo-terminales, uno por panel. Esto significa que los paneles persisten si se separa y vuelve a colocar más tarde. También significa que puede mostrar solo una ventana a la vez tmuxy que los paneles no se pueden compartir entre varias ventanas. tmuxsin embargo, permite compartir una ventana entre varias sesiones.

Prefiero el modelo utilizado por tmux, pero no podría argumentar que es mejor que el modelo utilizado por screen.

chepner
fuente
3
El argumento pro tmuxes el Deutsche Bahn . Viaja en un tren rápido, intenta trabajar sshusando una conexión móvil y verás rápidamente que el tmuxmodelo es muy superior, porque después de una de las interrupciones de conexión frecuentes no necesitas reorganizar todos los paneles en tu jumphost después de volver a iniciar sesión. SCNR
Tino
3
si se enfrentan desconexiones frecuentes, sugiero mirar en mosh que puede recuperar automáticamente de la señal perdida, a diferenciassh
Ciprian Tomoiagă
4

Para mí, el factor decisivo para tmux fue la implementación del intercambio de sesiones.

En GNU Screen, si deja que otro usuario se conecte a una sesión, o simplemente tiene su sesión conectada a más de un terminal, pueden operar de forma independiente (cambiar pantallas en una sesión A desde el terminal B no hace que el terminal A también cambie pantallas en sesión A).

Lo anterior no es el caso con tmux (¿todavía?) O aún no he podido encontrar una manera de cambiar el comportamiento.

Si alguien conoce una manera de cambiar este comportamiento en tmux o si tmux se actualiza para cambiar este comportamiento o dar la opción de cambiar este comportamiento ahora, deje un comentario.

therealklanni
fuente
66
tmuxtiene una noción de sesiones "vinculadas" con new-session -t shared. Las ventanas de 'compartido' aparecen en la nueva sesión, las nuevas ventanas en una aparecen en la otra y al cerrar una ventana en una se cierra en la otra. Sin embargo, qué ventana ve cada cliente es específica de la sesión real que adjunta.
chepner