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

Respostas:

9

Sessiongeralmente se refere a sessões de shell. Um shell é o que permite que você interaja com o computador. Ele atua 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 fazer sua coisa.

Na maioria dos tipos de Linux, o shell padrão é bashe uma nova bashsessão será iniciada toda vez que você abrir um novo terminal. Na saída que wvocê postou, você parece ter sua sessão gráfica de login (parece que está exibindo a 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 delas é uma instância separada do seu shell e cada uma conta como sua própria sessão.

Terdon
fonte
2

Eu acho que toda sessão de terminal é uma sessão de usuário. Você pode ter mais de um terminal no X e esses são terminais virtuais ou você pode ter um terminal real no console. Essas são todas as sessões. Este é o 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 você pode ver, os pontos são xterm (terminal virtual) e o outro (tty2) é um login do console.

Luigi
fonte
2

1. Embora o usuário efetue login 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:

-> Executando tarefas não interativas em segundo plano.
-> Alternar entre tarefas interativas via controle de tarefas.
-> Iniciando vários processos que trabalham juntos através de tubos.
-> Sistema de janelas em funcionamento, como o sistema de janelas X, que permite a abertura de várias janelas de terminais.

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 mais 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 do Linux, mas shell ou terminal significa usuário. Dois terminais na mesma máquina conectados pelo mesmo usuário do Linux significa 2 usuários diferentes e, portanto, 2 sessões de usuário diferentes aqui. Um terminal pode controlar o terminal apenas para uma única sessão).
O processo que está executando o shell para esse "usuário" ou sessão é conhecido como líder da sessão.

4. Observe também o fechamento do terminal pressionando o botão 'x' para não sair do terminal. Esse terminal continua funcionando em segundo plano. Se você quiser fazer uma sessão excedente do terminal, precisará sair do sistema pressionando CTRL + D ou sair.

5. Ao sair do terminal, o kernel envia o sinal SIGHUP (semelhante ao kill -1) para processar o líder da sessão. Agora, todos os outros processos em execução no terminal são filhos deste líder de sessão. Esses processos filhos formaram grupos de processos que são controlados por esse processo líder de sessão (processo pai).

6. O processo líder da sessão envia SIGHUP para cada processo filho, alguns terminam, enquanto outros podem optar por não terminar (aqueles suspensos ou em execução em segundo plano). Aqueles que optam por não finalizar 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 informações, consulte Link O Modelo de Processo de Desenvolvimento Linux

YATIN GUPTA
fonte
1

Uma sessão é cada shell de terminal executado pelos processos de um usuário. Por exemplo, eu tenho três sessões em execução no momento. Meu ambiente de desktop Mate e minhas duas janelas de terminal.

Vid Plavsic
fonte