Странное поведение с командой bg

Как отправить процесс (приложение) в фоновый режим, если он всегда ожидает ввода на терминал и все время отправляет полученные данные из uart в stdout?

Я не могу отправить свое приложение на фон с помощью CTRL + Z & bg% number / bg %%.

Любая идея, что не так?

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

# [CTRL-Z] [1]+ Stopped sudo ./my_app # bg %1 

и он показывает мне что-то вроде этого:

 [1]+ Stopped sudo ./my_app 

  • grep для конкретного процесса в ps, но не для самой команды grep
  • Что может послужить причиной перехода в безопасное состояние спящего режима для этого конкретного процесса?
  • Процессы CGroup не завершаются, даже когда основной процесс был убит командой Systemctl stop
  • Что должны делать интерактивные оболочки в сиротских группах процессов?
  • Почему у меня есть 9 процессов bash, почему один из них занимает столько CPU и как их остановить?
  • Как получить выполненную команду процесса, который успешно завершил работу с PID?
  • Получает ли этот диспетчер процесс зомби?
  • Запись внутри сокета, открытого другим процессом в Linux
  • 3 Solutions collect form web for “Странное поведение с командой bg”

    Когда программа, работающая в фоновом режиме, пытается считывать с терминала, она останавливается сигналом SIGTTIN . В настоящее время вход идет на передний план¹; это было бы разрушительно, если бы случайный вход был отправлен в программу переднего плана или в фоновую программу. Таким образом, фоновая программа приостанавливается до тех пор, пока она не появится на переднем плане.

    Если вам нужно только передать данные в вашу программу в начале, проведите в нее данные.

     echo "config=foo" | ./my_app & 

    Если вам нужно время от времени взаимодействовать с программой, но она может выполняться без присмотра большую часть времени, запустите ее в терминальном мультиплексоре, таком как Screen или Tmux . Например, с экраном:

     screen -S my_app ./my_app 

    Введите необходимый ввод, затем нажмите Ctrl + A, чтобы отключить сеанс экрана, т.е. пусть он запустится в фоновом режиме и вернется к исходному терминалу. Когда вы хотите снова взаимодействовать с программой, подключитесь к сеансу экрана:

     screen -S my_app -rd 

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

    ¹ Process group, но я не собираюсь вдаваться в эту тонкость здесь.

    Если ваша команда продолжает читать из tty, вам нужно позвонить

    fg

    после того, как вы получите сообщение «остановлено», чтобы ввести ожидаемый ввод.

    Разве вы не должны передавать аргументы в stdin, потому что они продолжают работать? Если вы просто CTRL-Z, он будет ждать ввода в фоновом режиме.

    например

     $ cat test.sh #!/bin/bash read var echo $var $ cat <<EOF > input d EOF $ ./test.sh < input d $ ./test.sh <input > stdout 2> stderr & [2] 23180 [2]- Done ./test.sh < input > stdout 2> stderr $ cat stdout d 

    При попытке запустить его, не передавая вход:

     $ ./test.sh > stdout 2> stderr & [2] 13012 [2]+ Stopped ./test.sh > stdout 2> stderr 
    Interesting Posts

    CIFS случайно потеряет соединение с общей долей Windows

    Как получить доступ к одному IP-адресу с использованием разных сетевых интерфейсов

    2 Аутентификация фактора – спросите о токене только при первом входе в систему

    Rsync исключает папки

    Почему итерация по файлу в два раза быстрее, чем чтение в память и вычисление в два раза?

    Как заблокировать сброс глифов в Linux?

    Как запустить приложение в Wine из окна терминала

    CentOS-сервер не может быть достигнут из локальной сети после отсутствия активного запроса на внешнюю сеть в течение некоторого времени

    Как удалить все неупорядоченные строки из текстового файла?

    Как использовать последовательный порт в качестве источника для Syslog?

    Проблемные цитаты

    Копия USB висит некоторое время, когда достигает 100%

    grep с большим количеством файлов, который содержит много строк?

    Debian VPN pptp-linux не сохраняет учетные данные

    Возможно ли временно менять пароли?

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