Linux
如何將終端附加到分離的程序?
我已經從我的終端分離了一個程序,如下所示:
$ process &
該終端現在早已關閉,但
process
仍在執行,我想向該程序的標準輸入發送一些命令。那可能嗎?
是的。首先,創建一個管道:
mkfifo /tmp/fifo
. 使用 gdb 附加到程序:gdb -p PID
然後關閉標準輸入:
call close (0)
;並再次打開它:call open ("/tmp/fifo", 0600)
最後,寫掉(從不同的終端,因為 gdb 可能會掛起):
echo blah > /tmp/fifo
當原始終端不再可用時…
reptyr
可能是您想要的,請參閱https://serverfault.com/a/284795/187998從那裡引用:
看看reptyr,它就是這樣做的。github頁麵包含所有資訊。
> > reptyr - 用於“重新安裝”程序的工具。 > ———————– > > > reptyr 是一個實用程序,用於獲取現有正在執行的程序並將其附加到新終端。通過 ssh 啟動了一個長時間執行的程序,但不得不離開並且不想中斷它?只需啟動一個螢幕,使用 reptyr 抓取它,然後終止 ssh 會話並回家。 > > > 用法 > – > > > 複製人PID > > > “reptyr PID” 將抓取 id PID 的程序並將其附加到您目前的終端。 > > > 附加後,該程序將從新終端獲取輸入並將輸出寫入新終端,包括^C和^Z。(不幸的是,如果你在後台執行它,你仍然必須在舊終端中執行“bg”或“fg”。如果不修補你的 shell,這可能無法以合理的方式修復。) > > >
編輯聲稱“
reptyr
無法獲取具有子流程的流程。或子流程(reptyr 版本 0.6.2)。” 有限的支持確實存在問題,問題