Todas as tarefas em um shell bash formam exatamente uma sessão?

0

Processo, grupo de processos e sessão (grupo de processos) são conceitos do Linux.

Se eu estiver correto, em um shell bash, os grupos de processos iniciados nele são chamados jobs.

Todos os trabalhos iniciados em um shell bash formam exatamente uma sessão? "Exatamente" significa não mais nem menos.

    
por Tim 10.08.2017 / 03:29

1 resposta

3

Nem todo processo shell, apenas um shell login cria uma nova sessão (mais detalhes abaixo). No início, a sessão tem obviamente apenas um membro, o próprio shell. Cada novo processo forjado pertence automaticamente à mesma sessão. Um processo pode se remover de sua sessão criando um novo com setsid() . Não há outra maneira de um processo mudar sua sessão.

Resumo:

session members = login shell
    AND all child processes (and their child processes, etc.)
    EXCEPT child processes that have created its own sessions

Uma questão remanescente é se todos os processos gerados pelo shell são sempre iniciados como "jobs", ou seja, um grupo de processos por comando. Embora isso seja normalmente verdade, não sei ao certo para shells não interativos.

UPDATE

Esta questão foi sobre bash , mas o mesmo pode ser dito sobre outras shells orientadas para linha de comando similares com controle de tarefas.

Como apontou Stéphane Chazelas, uma sessão é criada pelo programa que gerencia os logins em um dispositivo terminal ou pseudo-terminal. Uma sessão está estritamente vinculada ao seu terminal.

O usuário deve efetuar o login primeiro, só então seu programa shell pode ser determinado a partir do registro correspondente no arquivo passwd . Esse programa shell recebe exec ed - o PID permanece o mesmo. Uma sessão é criada dentro de um processo que se torna o shell de login do usuário.

    
por 10.08.2017 / 08:17