¿Es normal tener el mismo usuario conectado dos veces pero desde otro TTY?


6

No sé si esto es algo que está en macOS, pero en Linux normalmente solo veo un usuario si ejecuto el comando whoy w.

¿Es normal tener el mismo usuario conectado dos veces pero desde otro TTY?

No sé de dónde vino la segunda cuenta con el mismo nombre de usuario.

jen-air:~ jen$ who
jen     console  Aug 22 20:56 
jen     ttys000  Aug 23 08:39 

jen-air:~ jen$ w
 8:43  up 11:47, 2 users, load averages: 1.51 1.60 1.70
USER     TTY      FROM              LOGIN@  IDLE WHAT
jen     console  -                Wed20   11:46 -
jen     s000     -                 8:39       - w

Respuestas:


8

Aquí hay un poco más de información sobre lo que está sucediendo, desde una perspectiva de Unix de nivel inferior. Es largo y va más allá de lo que pediste, pero puede ser interesante para ti u otra persona que pase esta página.

Si mira el wmanual de comandos ( man w), dice que "la utilidad w imprime un resumen de la actividad actual en el sistema, incluyendo lo que está haciendo cada usuario". Eso es un poco vago y un poco engañoso. Específicamente, lo que whace es informarle sobre los inicios de sesión actuales . Los inicios de sesión se registran en un archivo llamado /var/run/utmpx. Existen métodos de biblioteca comunes para actualizar utmpxentradas, de modo que cada programa que necesita registrar o eliminar un inicio de sesión utiliza el mismo procedimiento.

wlee el utmpxarchivo utilizando esas rutinas de biblioteca comunes y muestra información sobre las sesiones de inicio de sesión actuales, junto con el proceso en primer plano . Una sesión de inicio de sesión puede hacer muchas cosas a la vez, pero solo un programa está en primer plano. Todos los demás son antecedentes, que es lo que sucede cuando coloca un &comando o presiona control-Zmientras se ejecuta un programa en una terminal.

Se crea una sesión de inicio de sesión cuando inicia sesión en su computadora en la pantalla integrada. Si tiene habilitado el cambio de usuario, se registra un inicio de sesión para cada usuario y permanece activo hasta que finaliza la sesión. Y si inicia sesión remotamente (por ejemplo, con ssh), se registra un inicio de sesión para eso. Cada uno de estos debería aparecer en wla salida de.

La mayoría de las aplicaciones de terminal, incluidas Terminal.app e iTerm, así como xtermsi está utilizando X11.app, pueden crear shells de inicio de sesión en una ventana o pestaña. Cuando crea una nueva ventana en una de estas aplicaciones, puede obtener otra sesión de inicio de sesión, que aparece como otra línea w. ¡Pero estas aplicaciones no necesariamente crean shells de inicio de sesión! Si una nueva ventana / pestaña es un shell de inicio de sesión generalmente se controla en las preferencias. Por ejemplo, en iTerm2, puede elegir en Preferencias> Perfiles> General> Comando si desea iniciar un shell de inicio de sesión o algún otro programa. Si solo pones "bash" allí, obtendrás un shell, pero no será un shell de inicio de sesión .

Entonces, ¿cuál es la diferencia? Es sutil, pero útil saberlo.

Aquí hay una buena discusión sobre shells de inicio de sesión versus shells regulares: https://unix.stackexchange.com/questions/38175/difference-between-login-shell-and-non-login-shell . Pero podemos resumir como: un shell de inicio de sesión se inicia como el primer proceso después de que algo configura un inicio de sesión utmpx. Cualquier programa puede ejecutar un shell sin inicio de sesión en cualquier momento, pero no es el primer proceso después de una entrada utmpx. (Más técnicamente, un shell de inicio de sesión es el proceso principal en un grupo de procesos. El hecho de que generalmente tenga una utmpxentrada es descriptivo, no necesario).

Si su shell es bash, como la mayoría, cada instancia de él lee y ejecuta el .bashrcarchivo. Cuando se bashejecuta como un shell de inicio de sesión, también lee y ejecuta los archivos .bash_profiley .profile. Esos archivos pueden contener instrucciones que deberían ocurrir solo para todas las sesiones nuevas. Eso es lo más práctico que debes saber sobre los shells de inicio de sesión. Eso, y los shells de inicio de sesión aparecen en w.

Aquí hay un experimento para ilustrar. Abra una nueva ventana de Terminal y ejecute w. Deberías ver algo como:

11:57  up 7 days, 59 mins, 5 users, load averages: 3.58 3.53 3.91
USER     TTY      FROM              LOGIN@  IDLE WHAT
dgc      console  -                16Aug18 7days -
dgc      s000     -                11:57       - w

s000es el nombre del terminal en el que se está ejecutando w. Existe en el sistema de archivos en /dev/ttys000. Por lo general, existe una relación uno a uno entre shells de inicio de sesión y terminales, pero no siempre.

Ahora abra una nueva ventana de Terminal. Vuelve al primero y corre de wnuevo.

12:09  up 7 days,  1:11, 5 users, load averages: 5.35 4.35 4.05
USER     TTY      FROM              LOGIN@  IDLE WHAT
dgc      console  -                16Aug18 7days -
dgc      s000     -                11:38       - w
dgc      s001     -                11:57       - -bash

Verá un nuevo inicio de sesión en s001/dev/ttys001- que se está ejecutando -bash. Ese guión al principio es una convención que le dice que bash se está ejecutando como un shell de inicio de sesión. No hay un programa en primer plano en ese terminal, por lo que le wmuestra el shell en sí.

Ahora vuelve a tu segunda ventana y corre bash. ¿Qué esperas que pase?

12:13  up 7 days,  1:14, 5 users, load averages: 5.61 5.07 4.41
USER     TTY      FROM              LOGIN@  IDLE WHAT
dgc      console  -                16Aug18 7days -
dgc      s000     -                11:38       - w
dgc      s001     -                11:57       - bash

El guión se ha ido. Esto se debe a que la misma sesión de inicio de sesión (terminal) ahora se está ejecutando, en primer plano, un shell que no es un shell de inicio de sesión. Es un hijo del original -bash. Si voltea hacia atrás y escribe exitpara salir de la fiesta infantil, verá de -bashnuevo.

Finalmente, tenga en cuenta el consoleinicio de sesión. Ese nunca cambiará en el uso ordinario. Por lo general, ejecuta el sistema de escritorio / ventana. Si enciende su Mac y no inicia sesión, pero luego inicia sesión sshdesde otra computadora, no verá esa línea en absoluto. Siempre aparecerá inactivo y siempre parecerá que no se está ejecutando nada, excepto con el guión, porque es una sesión de inicio de sesión.

Cuando un programa que creó una sesión de inicio de sesión finaliza ese inicio de sesión, vuelve y elimina la entrada del utmpxuso de los métodos de biblioteca comunes para ello. Y debido a que utmpxreside en el /var/rundirectorio, se elimina automáticamente cada vez que se reinicia su computadora, por lo que si de repente apaga su Mac mientras está conectado, no continuará viendo inicios de sesión falsos para siempre.


11

La aplicación de terminal predeterminada en macOS abre una segunda entrada de modo que cuando whoo wcomando se ejecuta la aplicación Terminal, hay una segunda entrada.

Dependiendo de su entorno y la aplicación Terminal, algunas aplicaciones de emulación de terminal como iTerm2 mostrarán solo un inicio de sesión.


9

Si es normal.

La consola es su inicio de sesión de escritorio y el segundo inicio de sesión aparece después de abrir una ventana de Terminal. De hecho, si tiene más de una ventana / pestaña Terminal abierta, se muestra una entrada correspondiente a cada una.


Es un poco sorprendente que no haya ninguna configuración en Preferencias para controlar si la ventana es un inicio de sesión o no.
Barmar

0

Si es normal Si usa un multiplexor de terminal como tmux o screen, cada 'pestaña' será una sesión de usuario separada.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.