Моя настоящая проблема в том, что процесс, который я запускаю в файле 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