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

0 ответов

Другие вопросы по тегам