2011-08-25 52 views
5

如何確保在使用Python Paramiko在遠程計算機上生成進程時,進程在連接時會死掉?如何確保當我殺死一個Python Paramiko腳本時,所有生成的進程都會死亡?

具體來說,我遇到的問題是我會運行wget或其他命令使用Paramiko,它會掛起。不幸的是,當我直接殺死python腳本進程時,遠程機器上的進程並沒有死亡。它只是繼續運行,我還有另一個掛起的過程。

我必須直接殺死進程,因爲我試圖將它與只能直接殺死進程的工具鏈接。

我聽說這可以通過使SSH成爲「控制終端」在SSH中完成。 Paramiko中有沒有什麼能夠做到這一點,或者在遠程機器產卵後終止任何進程?

謝謝!

+0

當你終止ssh連接時,遠程命令的stdin達到EOF。並不是所有的命令都檢查這個條件並在這種情況下繼續運行。我很驚訝,但這是wget的問題(除非你正在下載大文件)。 –

回答

2

您需要分配一個psedo-tty,以便在連接關閉時將SIGHUP發送到子進程。行爲良好的進程將在SIGHUP上退出。看到這個關於設置僞tty的答案:Paramiko and Pseudo-tty Allocation

相關問題