Вывод одной команды передается на другой; как закрыть оба?

Я называю Qt Assistant, как предлагается в stackoverflow :

nc -lkU ~/.assistantfifo | assistant -enableRemoteControl & 

Окно Qt Assistant открывается, и если я вызываю jobs , он возвращает:

 [1] + running nc -lkU ~/.assistantfifo | assistant -enableRemoteControl 

Затем я закрываю Qt Assistant (просто нажав «x»). Теперь jobs возвращаются:

 [1] + running nc -lkU ~/.assistantfifo | done assistant -enableRemoteControl 

Итак, nc продолжает работать, и я должен ввести killall nc .

Как сделать nc закончить тоже, когда я закрываю Qt Assistant? Или, наверное, я должен сделать это как-то иначе?

  • Отправляет SIGKILL в процесс с заменой, который отменит его до убийства?
  • Как я могу убить вредоносное ПО на сервере AWS EC2? (скомпрометированный сервер)
  • Приложение в терминале все еще работает, но не доступно напрямую
  • не может убить процесс gedit из своего PID
  • Что происходит с фоновыми заданиями после выхода из оболочки?
  • Как я могу убить процесс, выполняющийся на определенном IP-адресе и порту?
  • Декодировать флаги для команды Kill
  • Как убить процесс после отсоединения его от bash?
  • 2 Solutions collect form web for “Вывод одной команды передается на другой; как закрыть оба?”

    Команда, которую вы запускаете ( nc aka netcat ), будет прослушивать ввод при запуске с флагом -l . Обычно netcat в режиме прослушивания закрывается, когда он получает символ конца файла, но флаг -k предотвращает это. Другими словами, netcat не будет закрываться, пока вы не убьете его из-за того, как вы вызывали команду.

    См. Справочную страницу для получения дополнительной информации.

    Если вы хотите отделить второй процесс, вам также необходимо сгруппировать их с помощью

     $ ( nc -lkU ~/.assistantfifo | assistant -enableRemoteControl ) & 

    иначе это не сработает. Скобки необходимы для отсоединения обоих процессов.

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