У меня есть сценарий оболочки, который запускает сессию ssh на удаленном хосте и передает вывод другому локальному сценарию, например:
#!/bin/sh
ssh user@host 'while true ; do get-info ; sleep 1 ; done' | awk -f parse-info.awk
Работает нормально. Я запускаю его под программой 'supervise' из daemontools djb. Единственная проблема - отключение демона. Если я завершу процесс для этого сценария оболочки, процессы ssh и awk продолжат работать как сироты. Обычно я решал бы эту проблему с помощью exec
, чтобы заменить контролирующий процесс оболочки, но эти два процесса выполняются в своих собственных подоболочках и не могут заменить процесс оболочки.
Я хотел бы, чтобы управляющий скрипт оболочки «переадресовывал» любые сигналы, которые он получает, по крайней мере, на один из дочерних процессов, чтобы я мог разорвать канал и полностью завершить работу. Есть ли простой способ сделать это?