Бенуа Гаррет поставил меня на правильный путь, когда он предположил, что что-то ждет ввода пользователя.Пытаясь очистить сценарий дочернего процесса (и то, что он вызывал по очереди), я наткнулся на то, что казалось ошибкой в сценарии внизу (который оставался там незамеченным в течение нескольких лет).
Размещенный выше код Ruby сделал вызов начальному сценарию оболочки.Это, в свою очередь, вызывало второй сценарий оболочки, который содержал следующую мерзость:
(some_application) &
>/dev/null 2>&1
Я не уверен, что это то, что произошло, но способ, которым я прочитал это, заключается в том, что some_application запускается и запускается какфоновый процесс.Стандартный вывод перенаправляется на / dev / null, а стандартная ошибка перенаправляется на стандартный вывод ... , но к какому процессу относится это перенаправление ?
Изменение вызова на
some_application >/dev/null 2>&1 &
(т. Е. Запуск some_application, выбрасывающего стандартную консоль и записывающего стандартную ошибку на консоль) заставил все мои проблемы уйти.