10 votos

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

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

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

No sé de dónde salió 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

16voto

dgc Puntos 76

Aquí hay un poco más de información sobre lo que está sucediendo, desde una perspectiva de bajo nivel de Unix. Es largo y va más allá de lo que has preguntado, pero puede ser interesante para ti o para alguien que pase por esta página.

Si se mira el w manual del comando ( man w ), dice que "La utilidad w imprime un resumen de la actividad actual en el sistema, incluyendo lo que cada usuario está haciendo". Eso es un poco vago, y un poco engañoso. Específicamente lo que w hace es informarle sobre los actuales inicios de sesión . Los inicios de sesión se registran en un archivo llamado /var/run/utmpx . Existen métodos comunes de la biblioteca para actualizar utmpx para que todos los programas que necesiten registrar o eliminar una entrada utilicen el mismo procedimiento.

w lee el utmpx utilizando esas rutinas comunes de la biblioteca y muestra información sobre las sesiones de inicio de sesión actuales, junto con el proceso en primer plano . Una sesión de acceso puede estar haciendo muchas cosas a la vez, pero sólo un programa está en primer plano. Todos los demás están en segundo plano, que es lo que ocurre cuando se pone un & en su comando o presione control-Z mientras se ejecuta un programa en un terminal.

Se crea una sesión de inicio de sesión cuando se accede al ordenador en la pantalla incorporada. Si tienes activada la conmutación de usuarios, se registra un inicio de sesión para cada usuario, y permanece activo hasta que se cierra la sesión. Y si se inicia la sesión de forma remota (por ejemplo, con ssh ), se registra una entrada para ello. Cada uno de ellos debe aparecer en w de la salida.

La mayoría de las aplicaciones de terminal, incluyendo Terminal.app y iTerm, así como xterm si está usando X11.app, son capaces de crear conchas de entrada en una ventana o pestaña. Cuando creas una nueva ventana en una de estas aplicaciones, puedes obtener otra sesión de inicio de sesión, que aparece como otra línea en w . Pero estas aplicaciones no necesariamente ¡crear conchas de entrada! El hecho de que una nueva ventana/pestaña sea un shell de inicio de sesión suele controlarse en las preferencias. Por ejemplo, en iTerm2, puedes elegir en Preferencias > Perfiles > General > Comando si quieres lanzar un shell de inicio de sesión o algún otro programa. Si sólo pones "bash" ahí, obtendrás un shell, pero no será un inicio de sesión concha.

¿Cuál es la diferencia? Es sutil, pero es útil conocerla.

Hay una buena discusión sobre las cáscaras de inicio de sesión frente a las cáscaras normales aquí: 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 establece un inicio de sesión en utmpx . Un shell que no sea de acceso puede ser ejecutado en cualquier momento por cualquier programa, pero no es el primer proceso después de una entrada en utmpx . (Más técnicamente, un shell de acceso es el proceso principal de un grupo de procesos. El hecho de que normalmente tenga un utmpx La entrada es descriptiva, no necesaria).

Si su cáscara es bash como la mayoría, cada instancia de la misma lee y ejecuta el .bashrc archivo. Cuando bash se ejecuta como un shell de inicio de sesión, también lee y ejecuta el .bash_profile y .profile archivos. Esos archivos pueden contener instrucciones que deben ocurrir sólo para todas las nuevas sesiones. Eso es lo más práctico que hay que saber sobre los shells de inicio de sesión. Eso, y que los shells de inicio de sesión aparecen en w .

He aquí un experimento para ilustrarlo. Abre una nueva ventana de Terminal y ejecuta 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

s000 es el nombre de la terminal que está ejecutando w en. Existe en el sistema de archivos en /dev/ttys000 . Normalmente hay una relación de uno a uno entre las conchas de acceso y los terminales, pero no siempre.

Ahora abre una nueva ventana de Terminal. Vuelve a la primera y ejecuta w de nuevo.

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

Se ve un nuevo inicio de sesión en s001/dev/ttys001 - que está funcionando -bash . Ese guión al principio es una convención que le indica que bash se está ejecutando como un shell de inicio de sesión. No hay ningún programa en primer plano en esa terminal, así que w le muestra el propio caparazón.

Ahora vuelve a tu segunda ventana y ejecuta bash . ¿Qué espera que ocurra?

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 ha desaparecido. Eso es porque la misma sesión de inicio de sesión (terminal) está ahora ejecutando, en primer plano, un shell que no es un shell de inicio de sesión. Es un niño del original -bash . Si vuelves a teclear exit para salir del bash infantil, verás el -bash de nuevo.

Por último, hay que tener en cuenta el console de inicio de sesión. Ese nunca cambiará en el uso ordinario. Es el que ejecuta el sistema de escritorio/ventana normalmente. Si usted enciende su Mac y no iniciar la sesión, pero luego ssh desde otro ordenador, no verás esa línea en absoluto. Siempre aparecerá inactivo, y siempre parecerá que no 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 atrás y elimina la entrada de utmpx utilizando los métodos comunes de la biblioteca para ello. Y porque utmpx reside en el /var/run se elimina automáticamente cada vez que se reinicia el ordenador, por lo que si apagas de repente tu Mac mientras has iniciado sesión, no seguirás viendo inicios de sesión falsos para siempre.

12voto

Kysh Puntos 111

La aplicación Terminal por defecto en MacOS abre un segundo inicio de sesión para que cuando who o w se ejecuta la aplicación Terminal, hay un segundo inicio de sesión.

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

10voto

user3796218 Puntos 11

es normal.

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

0 votos

Es un poco sorprendente que no haya ningún ajuste en las Preferencias para controlar si la ventana es un inicio de sesión o no.

0voto

rherthwe Puntos 1

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X