Bash и фоновые процессы PGID и получение сигналов
Моя настоящая проблема заключается в том, что процесс, который я запускаю в rcfile в Docker как docker run container bash --rcfile rcfile
остается присоединенным к сеансу bash, разделяя PGID, что означает, что, когда я Ctrl-C несвязанная команда, процесс получает SIGINT
Итак, внутри Rcfile его просто (nohup command &)
, когда вместо использования rcfile я вызываю его непосредственно в оболочке, PGID отличается и Ctrl-C не влияет.
Отсюда я понял, что по какой-то причине bash не выполняет фоновые процессы при выполнении файла rcfile.
Написал небольшой тест без докера, где я вижу поведение PGID.
RCFILE, сна и 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