Mientras escuchaba música, cambié la consola virtual usando Ctrl+ Alt+ F2, y de repente la música se detuvo. Volviendo a la consola que ejecuta el servidor X Ctrl+ Alt+ F7o iniciando sesión en la consola que estoy usando actualmente ( Ctrl+ Alt+ F2), comienza a reproducir la música nuevamente.
Linux (estoy usando Ubuntu) es un sistema operativo multiusuario. Hasta donde yo sé, tiene 7 consolas virtuales en las que los usuarios pueden iniciar sesión y trabajar simultáneamente. Entonces, ¿por qué está pasando esto? ¿Qué pasaría si mi sistema se estuviera actualizando al cambiar las consolas?
Respuestas:
Linux tiene múltiples consolas virtuales. Ctrl+ Alt+ cambia entre estas consolas. Cuando cambia de la consola 7 a la consola 2, los periféricos de entrada y salida se redirigen de la consola 7 a la consola 2. Cuando la consola 7 está inactiva, no tiene acceso a los periféricos de entrada / salida: la pantalla no se muestra en la pantalla, las aplicaciones no reciben entrada de teclado, etc.Fn
Por razones históricas, la entrada y salida de sonido utiliza canales completamente diferentes desde dispositivos de entrada como teclado y mouse y desde pantallas de video. Los dispositivos de consola (la abstracción en el sistema operativo) cubren el teclado y el video pero no el sonido. La implementación básica más común del sonido en un sistema Unix es independiente de ese sistema, y el permiso para usar los periféricos de sonido se otorga en función de la pertenencia al grupo en lugar de la propiedad de la consola. Esto es, de hecho, una deficiencia de diseño.
Ubuntu ha configurado las cosas para que la sesión iniciada en la consola, y solo ellas, tenga acceso al dispositivo de audio. Si cambia de consola, pierde el acceso al dispositivo de audio, a menos que también inicie sesión en esa otra consola. Esto es lo que realmente debería haberse hecho desde el principio, pero no porque los diseñadores de interfaces de consola no estuvieran pensando en el sonido.
Cuando cambia a otra consola, sus programas siguen ejecutándose, porque la CPU no está asociada con una consola sino con una máquina: cualquier persona con una cuenta en la máquina puede usar el tiempo de la CPU. Lo mismo ocurre con otros recursos, como memoria y archivos (sujetos a permisos). Solo las interacciones con el usuario se rigen por la propiedad de la consola. Su sonido deja de reproducirse cuando cambia a una consola donde no ha iniciado sesión porque sus programas pierden el privilegio de acceder al dispositivo de salida de sonido.
Creo que Ubuntu implementa el control de acceso a través de Polkit , pero no sé exactamente cómo funciona esto.
fuente
Hace un tiempo, las personas usaban terminales de computadora para ingresar datos o mostrar datos de un mainframe Unix. Si alguno de los usuarios de este terminal quisiera, digamos
cat /dev/zero
, la salida no se transmitió a todos los terminales / usuarios conectados al mismo mainframe (eso es porque era un sistema multiusuario, y cada usuario podía ejecutar sus tareas sin afectar a otros usuarios) .En nuestros días, estamos usando terminales virtuales (o consolas virtuales - VC) que son emulaciones de software de las terminales físicas de la computadora y funcionan de manera similar. Si ha iniciado sesión en VC1 y se ejecuta
ls -alR /
, la salida no se transmitirá a todos los VC e, incluso si cambia a otro VC,ls
seguirá ejecutándose en VC1 y enviará su salida a VC1 (de la misma manera, su actualización el comando seguirá ejecutándose en el VC que lo inició, incluso si cambia a otro VC).Ahora, el sonido es un poco diferente a la salida estándar, ya que (de forma predeterminada) usa el mismo dispositivo para la salida sin importar el VC en el que su usuario haya iniciado sesión, pero su usuario debe iniciar sesión para tener acceso a la salida de la dispositivo de sonido.
También puede echar un vistazo aquí para obtener más detalles sobre VC.
fuente
Tratar
De: https://www.reddit.com/r/linux/comments/1ckvhd/keeping_music_playing_across_multiple_terminal/
fuente