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