Ssh

如何取消正在執行的程序並將其關聯到新的螢幕外殼?

  • October 19, 2017

我在 SSH shell 上有一個正在執行的程序。我想暫停它並在我回來時能夠取消它的執行。

我想到的一種方法是將其所有權轉移到螢幕外殼,從而使其在其中執行。

有沒有不同的方法可以繼續?

disown您可以使用內置命令從 shell 撤銷程序的“所有權” :

# press Ctrl+Z to suspend the program
bg
disown

然而,這只告訴 shellSIGHUP在 shell 退出時不要向程序發送信號。程序將保留它與終端的任何連接,通常作為標準輸入、輸出和錯誤流。無法將它們重新連接到另一個終端。(螢幕通過模擬每個視窗的終端來工作,因此程序附加到螢幕視窗。)


通過在調試器中附加程序(即使用ptrace)並使其呼叫和open,可以將文件描述符重新附加到不同的文件。有一些工具可以做到這一點;這是一個棘手的過程,有時他們會導致該過程崩潰。可能性包括(從How can I disown a running process and associate it to a new screen shell? and Can I nohup/screen an already-started process? 的答案收集的連結? ):dup``close

引用自:https://unix.stackexchange.com/questions/4034