Qual é a definição de uma “sessão” no linux?

7

Quando eu executo o comando "w", vejo dois usuários conectados (ambos são eu). Uma pesquisa rápida aqui diz que isso é normal porque "A usuário único pode ter várias sessões ativas a qualquer momento. "

O que é uma sessão? Por que eu tenho dois deles quando apenas me conectei ao sistema uma vez?

    
por Ulkoma 27.09.2013 / 14:56

4 respostas

5

Session geralmente se refere a sessões de shell. Um shell é o que permite que você interaja com o computador. Ele age como uma ponte entre o usuário e o kernel . Sempre que você executa um comando, é o shell que captura sua intenção e diz ao kernel para executar suas ações.

Na maioria dos sabores do Linux, o shell padrão é bash e uma nova sessão bash será iniciada toda vez que você abrir um novo terminal. Na saída de w que você postou, parece que você tem sua sessão de login gráfica (parece que você está desconectando da máquina):

argento  :0        18set13 ?xdm?   2days  1.58s gdm-session-worker [pam/gdm-password]

Alguns emuladores de terminal aberto:

argento  pts/0     18set13 29:26m  5:26   5:26  rdesktop -g 1200x700 -u administrator -p XXXXXXXXX -d DOMAIN -K srv-wsus
argento  pts/1     18set13  9days  0.16s  0.16s /bin/bash
argento  pts/2     lun10    5.00s  0.09s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/3     14:40   33:41   0.09s  0.03s vim notes.txt
argento  pts/4     gio12   26:04m  0.10s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/5     14:56   17:33   0.11s  0.11s /bin/bash

E você também parece ter feito login a partir de um tty não-gráfico:

argento  tty2      15:11    1:01   0.09s  0.09s -bash

Cada uma dessas é uma instância separada do seu shell e cada uma conta como sua própria sessão.

    
por 27.09.2013 / 17:39
2

Eu acho que cada sessão de terminal é uma sessão de usuário. Você pode ter mais de um terminal em X e esses são terminais virtuais, ou você pode ter um terminal real no console. Essas são todas as sessões. Este é meu 'w'

$ w
 15:14:13 up 9 days,  6:02,  8 users,  load average: 1,03, 1,19, 1,31
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
argento  :0        18set13 ?xdm?   2days  1.58s gdm-session-worker [pam/gdm-password]
argento  pts/0     18set13 29:26m  5:26   5:26  rdesktop -g 1200x700 -u administrator -p XXXXXXXXX -d DOMAIN -K srv-wsus
argento  pts/1     18set13  9days  0.16s  0.16s /bin/bash
argento  pts/2     lun10    5.00s  0.09s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/3     14:40   33:41   0.09s  0.03s vim notes.txt
argento  pts/4     gio12   26:04m  0.10s  7.55s /usr/bin/python /usr/bin/terminator
argento  pts/5     14:56   17:33   0.11s  0.11s /bin/bash
argento  tty2      15:11    1:01   0.09s  0.09s -bash

A segunda coluna mostra o tty, como vc pode ver os pts são xterm (terminal virtual) o outro (tty2) é um login do console.

    
por 27.09.2013 / 15:21
1

Uma sessão é cada shell de terminal executado pelos processos de um usuário. Por exemplo, tenho 3 sessões em execução agora. Meu ambiente de área de trabalho e minhas duas janelas de terminal.

    
por 27.09.2013 / 15:18
1

1. Embora o login do usuário em um único processo (shell, que é sua interface de linha de comando), os usuários acabam executando muitos processos como resultado de uma ação como:

- > Execução de tarefas não interativas em segundo plano.
- > Alternando entre tarefas interativas via controle de tarefas.
- > Iniciando vários processos que funcionam juntos por meio de pipes.
- > Sistema de janelas em execução, como o sistema X window, que permite a abertura de várias janelas de terminal.

2. Para lidar com todos esses processos, o kernel precisa formar grupos de processos compostos por esses processos.

3. Para gerenciar esses grupos de processos ainda de acordo com o usuário, esses grupos são divididos de acordo com o usuário em sessões. (Observe que o usuário não é usuário linux, mas shell ou terminal significa usuário. Dois terminais na mesma máquina conectados pelo mesmo usuário linux representam 2 usuário diferente e, portanto, 2 sessões de usuário diferentes aqui. Um terminal pode estar controlando o terminal para uma única sessão).
O processo que está executando o shell para esse "usuário" ou sessão é conhecido como líder de sessão.

4. Observe também o fechamento do terminal pressionando o botão "x" para não sair desse terminal. Esse terminal continua funcionando em segundo plano. Se você quiser mais de sessão do terminal, você tem que sair de lá pressionando CTRL + D ou sair.

5. Quando você sai do terminal, o kernel envia um sinal SIGHUP (semelhante a kill -1) para o processo que é o líder da sessão. Agora, todos os outros processos em execução no terminal são filhos desse líder de sessão. Esses processos filhos formaram grupos de processos controlados por esse processo de líder de sessão (processo pai).

6. O processo do líder da sessão envia SIGHUP para cada processo filho, alguns processos são encerrados, enquanto alguns podem optar por não finalizar (aqueles suspensos ou em execução em segundo plano). Aqueles que optam por não terminar tornam-se órfãos como overs de sessão e imediatamente adotados pelo processo init (pai de todo o processo na máquina linux).


Para mais referências, consulte O modelo de processo de desenvolvimento do Linux

    
por 08.02.2018 / 19:23

Tags