Каково поведение отмененного процесса над SSH, записывающего stdout, когда сеанс SSH теряется?

У меня есть приложение, которое обрабатывает HTTP-запросы и выводит определенную информацию о запросе, когда обрабатывает его на stdout . В этом сценарии я disown -h и disown процесс, disown на него. Он по-прежнему продолжает печатать на stdout , что ожидается. Кроме того, этот процесс запускается в сеансе SSH. Предположим, у меня есть слабый доступ в Интернет, и после выполнения всего вышеизложенного соединение прерывается, но SSH не знает, что это произошло. Естественно, это занимает несколько секунд, прежде чем SSH действительно осознает, что соединение прервано.

За это время приложение начинает испытывать таймауты при обработке запросов, пока сеанс SSH фактически не умрет. Это связано с проблемами буферизации, связанными с записью на stdout когда PTY больше не существует?

One Solution collect form web for “Каково поведение отмененного процесса над SSH, записывающего stdout, когда сеанс SSH теряется?”

disown не позволит вашему приложению получать сигнал SIGHUP при выходе SSH. Однако, если приложение впоследствии записывает на pty, который был отозван, он получит сигнал SIGPIPE . Если вы не обрабатываете или игнорируете SIGPIPE , он по умолчанию убьет ваше приложение.

Если приложение обрабатывает SIGPIPE то его попытки записи возвращают статус ошибки, а затем до приложения, игнорирует ли она ошибку, прерывает или делает что-то еще. (Игнорирование ошибок редко бывает разумным.)

Если вам просто нужен самый простой способ предотвратить умирание вашего приложения и не хотите перенаправлять его в файл, подумайте о том, чтобы запустить его на screen или в tmux или использовать mosh вместо ssh .

  • где находится stdin, stdout, дескриптор файла stderr в AIX (unix)
  • Труба не поднимает stdout
  • Почему выдача одной и той же команды создает больше выходных данных в tty, чем в pts / gnome-terminal?
  • Команда для вывода содержимого файла в stdout?
  • Текст заменяет буквально * все * экземпляры строки через stdin, stdout
  • перенаправить вывод оболочки в файл, даже когда я убиваю программу
  • Как замедлить прокрутку многостраничного стандартного вывода на терминал?
  • Вывод содержимого конвейера в файл и отображение количества строк в файле на stdout
  • Печать содержимого файла с помощью grep
  • Перенаправить stderr из уже запущенного скрипта
  • Может перенаправлять stdout и stderr в те же строки, что и строки?
  • Interesting Posts

    Список всех ключей GPG / PGP локального ключевого сервера SKS

    Как запустить приложение после входа в CentOS?

    Почему Linux имеет компилятор C по умолчанию?

    Конфигурация каталога Apache при установке nominatim

    Перенаправление USB-сканера на машину Windows

    добавьте «#» в начале выбранных строк в файле

    Удалять каталоги последовательно или одновременно в фоновом режиме

    Могу ли я уменьшить уровень привилегий на хранилище сертификатов монов?

    Передача определений переменных в определенные оболочки в ssh

    загрузочный раздел remount как readonly

    Каковы альтернативы linux для skype?

    Как пройти «Загрузка исходного Ramdisk» зависает после перехода с x86_64 на i686 cpu

    Перемещение частично совпадающих файлов, которые уже существуют (PLC-транскодер)

    Как отредактировать / исправить тему, чтобы она поддерживала новую версию gnome?

    Заголовки / исходные файлы C ++ в файле выбора

    Linux и Unix - лучшая ОС в мире.