2010-06-20 62 views
3

我有一個我運行的Java進程。如果我通過SSH啓動進程並將命令傳遞給它,但如果我終止SSH會話,則會失去對進程的「控制」。我怎樣才能重新獲得對這個過程的「控制」?它仍在運行。將命令傳遞給運行java進程?

我知道進程的ID。這是可能的還是必須重新啓動過程?

回答

7

你可能要開始屏幕。

嘗試在提示符下鍵入screen。 (安裝程序,如果你沒有的話)。

運行示例:

$ ssh yourserver 
Password: 

$ screen       # start the screen 
$ java -jar YourApp.jar 
output... 
more output... 
<Ctrl-A D>      # detach process for later reattach 
$ exit       # exit your ssh session 

第二天

$ ssh yourserver 
Password: 

$ screen -x      # reattach process 

$ java -jar YourApp.jar 
output... 
more output...     # back to where we were yesterday. 

類型man screen以獲取更多信息。

+0

我一直在使用屏幕,也許你可以幫助解決這個問題。我試圖發送一個命令到一個detatched進程,該手冊說使用-X操作符,但它似乎沒有工作。 如果我的屏幕進程ID是123,並且我想將命令「rebo​​ot」發送到我的進程,那麼語法是什麼? 屏幕-S 123 -X「重新啓動」不起作用。 – sam 2010-06-20 14:27:05

+0

看看http://www.mail-archive.com/[email protected]/msg35519.html – aioobe 2010-06-20 14:33:30

+0

啊哈!這有用,謝謝。我確實還有一個問題。如果我想「模仿」我使用-X輸入內容,我怎麼能做到這一點?這個程序響應我輸入「你好」,但「你好」是一個無法識別的命令。有沒有我用來模擬打字的特殊字符? – sam 2010-06-20 14:40:48

1

使用GNU screen程序。

0

沒有辦法以重新連接已斷開那樣的處理的標準的輸入/輸出。這不是特定於Java應用程序。

爲了避免陷入這種情況下,使用screen實用程序或類似的東西運行應用程序。

相關問題