GNU/Linux >> Znalost Linux >  >> Linux

Jak připojím terminál k oddělenému procesu?

Ano to je. Nejprve vytvořte kanál:mkfifo /tmp/fifo .Pro připojení k procesu použijte gdb:gdb -p PID

Poté zavřete stdin:call close (0); a znovu jej otevřete:call open ("/tmp/fifo", 0600)

Nakonec odepište (z jiného terminálu, protože gdb pravděpodobně přestane reagovat):

echo blah > /tmp/fifo


Když původní terminál již není přístupný...

reptyr může být to, co chcete, viz https://serverfault.com/a/284795/187998

Citace odtud:

Podívejte se na reptyr, který přesně to dělá. Stránka github obsahuje všechny informace.

reptyr – Nástroj pro „přepisování“ programů.

reptyr je nástroj pro převzetí existujícího běžícího programu a jeho připojení k novému terminálu. Začali jste s běžícím procesem přes ssh, ale musíte odejít a nechcete ho přerušovat? Stačí spustit obrazovku, usereptyr ji uchopit a pak zabít thessh session a jít domů.

POUŽITÍ

reptyr PID

"Reptyr PID" uchopí proces s ID PID a připojí jej k vašemu aktuálnímu terminálu.

Po připojení proces převezme vstup a zapíše výstup do nového terminálu, včetně ^C a ^Z. (Bohužel, pokud jej použijete na pozadí, stále budete muset spouštět "bg" nebo "fg" ve starém terminálu. To je pravděpodobné nemožné opravit v oblastech vhodným způsobem bez záplaty yourshell.)


Jsem si zcela jistý, že nemůžete.

Zkontrolujte pomocí ps x . Pokud má proces ? jako ovládající tty , již do něj nemůžete odesílat vstup.

9942 ?        S      0:00 tail -F /var/log/messages
9947 pts/1    S      0:00 tail -F /var/log/messages

V tomto příkladu můžete odeslat vstup na 9947 udělat něco jako echo "test" > /dev/pts/1 . Druhý proces (9942 ) není dosažitelný.

Příště můžete této situaci předejít pomocí screen nebo tmux.


Linux
  1. Jak nainstalovat vtop na Linux

  2. Jak spustit příkaz, který přežije uzavření terminálu?

  3. Jak převést příkazy do libovolného terminálu?

  1. Jak zkontrolovat HZ v terminálu?

  2. Jak zabít zombie proces

  3. Jak identifikovat port k procesu?

  1. Jak spustit příkaz Linux na pozadí a odpojit proces v terminálu

  2. Jak spustit proces Rsync na pozadí

  3. Jak získat ID procesu na pozadí?