Как эмуляторы терминала могут уничтожить своих детей после Recieving SIGKILL?

Как Вы передаете данные? (rsync по ssh? scp? sftp? что-то еще?)

rsync позволит Вам ограничивать пропускную способность (см. опцию - bwlimit=KBPS). rsync-e ssh - bwlimit..

С другой стороны, Вы могли установить qdisc или эквивалентный, чтобы сделать необычное ограничение уровня, но я подозреваю, что в Вашем случае это было бы серьезным излишеством. Документация относительно этого доступна в ПРАКТИЧЕСКОМ РУКОВОДСТВЕ Расширенной маршрутизации и Управления трафиком Linux

12
07.11.2012, 00:35
3 ответа

Процесс, запущенный xterm будет лидер сессии в управлении терминала.

Когда терминал уходит, тот процесс автоматически получают сигнал SIGHUP (сопровождаемый SIGCONT). Это отправляется ядром похожим способом, которым процессы получают SIGINT при нажатии CTRL-C.

Кроме того, оболочка может отправить SIGHUP некоторым его детям после выхода (см. disown в некоторых оболочках для отключения этого)

11
27.01.2020, 19:56

Ваш вопрос отвечает на себя, это происходит, потому что эти процессы работают как дети под эмулятором терминала. Таким образом, Вы уничтожаете эмулятор терминала, и при этом, уничтожаете все дочерние процессы (так как дети работают под той же группой процесса как эмулятор терминала управления).

Посмотрите, например, следующее:

csb@darwin[~]$ ps fauwx | grep -A6 "xfce4-terminal" | awk '{ for (i = 2; i <= 9; i++) $i="" ; print $0 }' 
csb         0:32 xfce4-terminal --geometry=271x65 --display :0.0 --role=Terminal-0x1340050-2606-1351620352 --show-menubar --show-borders --hide-toolbars --working-directory /home/csb --tab --working-directory /home/csb
csb         0:00 \_ gnome-pty-helper
csb         0:00 \_ bash
csb         0:00 | 
                  \_ ssh [redacted]
csb         0:00 \_ bash
csb         0:00 \_ ps fauwx
csb         0:00 \_ grep --color=auto -A6 xfce4-terminal
csb         0:00 \_ awk { for (i = 2; i <= 9; i++) $i="" ; print $0 }

Все эти процессы работают при 'xfce4-терминальных' процессах, поэтому если я уничтожу тот процесс затем, то он уничтожит автоматически все дочерние процессы в группе процесса... тот же путь, например, который выход из окна эмулятора терминала обязательно уничтожил бы мое соединение SSH.

Программы, такие как оболочки создают новые группы процесса, обычно помещая связанные дочерние процессы в группу. Каждое задание является группой процесса. Вне ядра оболочка управляет заданием путем отправки сигналов в группу процесса задания с killpg системным вызовом, который поставляет сигнал всем процессам в группе процесса.

1
27.01.2020, 19:56
  • 1
    1: Уничтожение родителя не заставляет детей быть уничтоженными. Париж –  camh 06.11.2012, 08:46
  • 2
    , такие как оболочки создают новые группы процесса, обычно помещая связанные дочерние процессы в группу. Каждое задание является группой процесса. Вне ядра оболочка управляет заданием путем отправки сигналов в группу процесса задания с killpg системным вызовом, который поставляет сигнал всем процессам в группе процесса. –  Charles Boyd 06.11.2012, 09:40
  • 3
    @CharlesBoyd, Что комментарий должен быть частью Вашего ответа. –  jordanm 06.11.2012, 10:01
  • 4
    @CharlesBoyd: Добавьте, что к Вашему ответу и я дам Вам +1 вместо-1. Ваш ответ в настоящее время читает, как будто дочерние процессы уничтожаются, когда родительский процесс уничтожается (BTW, его основанное на сессии, не обрабатывают основанный на группе). –  camh 06.11.2012, 11:05
  • 5
    @CharlesBoyd я понимаю, что, но точка вопроса - то, как делает это, "управляют [] заданием путем отправки сигналов", когда это получает SIGKILL. Я не вижу пути к нему для использования killpg системный вызов в той точке. –  Kevin Cox 06.11.2012, 15:20

Во-первых, я не могу воспроизвести mplayer выживание уничтожаемого терминала, с помощью xterm.

Причина это умирает, то, что это получает SIGHUP от, он - смерть родителя.

0
27.01.2020, 19:56
  • 1
    , я никогда не говорил, что это сделало, я сказал, что это умирает, но выживает, когда это находится в сценарии, и это уничтожается. –  Kevin Cox 06.11.2012, 15:17
  • 2
    Не выживает в сценарии, для меня. –  tumbleweed 06.11.2012, 16:04

Теги

Похожие вопросы