Bash e background processam sinais PGID e de recepção

2

Meu problema real é que um processo executado em um rcfile no docker como docker run container bash --rcfile rcfile permanece conectado à sessão bash compartilhando o PGID, o que significa que quando eu Ctrl-C um comando não relacionado, o processo recebe um SIGINT

Então, dentro do rcfile é apenas (nohup command &) , quando em vez de usar o rcfile eu o chamo diretamente no shell o PGID é diferente e o Ctrl-C não afeta.

De lá, deduzi que, por algum motivo, o bash não processa o mesmo ao executar o rcfile.

Escreveu um pequeno teste sem a janela de encaixe, onde vejo o comportamento do PGID.

RCFILE, sleep e bash compartilham o PGID

Cobain ~/tmp/testbash$ cat rcfile 
#!/bin/bash
(sleep 10 &)

Cobain ~/tmp/testbash$ bash --rcfile rcfile
arkaitzj@Cobain:~/tmp/testbash$ ps -o  "%p %r %y %x %c"
  PID  PGID TTY          TIME COMMAND
 2883  2883 pts/0    00:00:06 bash
27911 27911 pts/0    00:00:00 bash
27913 27911 pts/0    00:00:00 sleep
27914 27914 pts/0    00:00:00 ps

Entrada de comando no shell, o PGID difere

Cobain ~/tmp/testbash$ bash
Cobain ~/tmp/testbash$ ( sleep 10 &)
Cobain ~/tmp/testbash$  ps -o  "%p %r %y %x %c"
  PID  PGID TTY          TIME COMMAND
 2883  2883 pts/0    00:00:06 bash
27999 27999 pts/0    00:00:00 bash
28127 28126 pts/0    00:00:00 sleep
28132 28132 pts/0    00:00:00 ps

O que eu não entendo deste exemplo de bash é que no caso do rcfile, quando eu ctrl-C ele não SIGINT o processo sleep, quando ele está compartilhando o PGID

    
por Arkaitz Jimenez 21.09.2014 / 16:18

0 respostas