Назад | Перейти на главную страницу

Bash и фоновые процессы PGID и получение сигналов

Моя настоящая проблема в том, что процесс, который я запускаю в файле rcfile в докере как docker run container bash --rcfile rcfile остается прикрепленным к сеансу bash, разделяя PGID, что означает, что когда я нажимаю Ctrl-C несвязанную команду, процесс получает SIGINT

Итак, внутри rcfile просто (nohup command &), когда вместо использования rcfile я вызываю его непосредственно в оболочке, PGID отличается, и Ctrl-C не влияет.

Отсюда я сделал вывод, что по какой-то причине bash не выполняет фоновые процессы во время выполнения файла rcfile.

Написал небольшой тест без докера, где вижу поведение PGID.

RCFILE, sleep и bash разделяют 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

Ввод команд в оболочке, PGID отличается

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

Что я не понимаю в этом примере bash, так это то, что в случае rcfile, когда я нажимаю ctrl-C, он не SIGINT процесс сна, когда он разделяет PGID