我有一個我運行的Java進程。如果我通過SSH啓動進程並將命令傳遞給它,但如果我終止SSH會話,則會失去對進程的「控制」。我怎樣才能重新獲得對這個過程的「控制」?它仍在運行。將命令傳遞給運行java進程?
我知道進程的ID。這是可能的還是必須重新啓動過程?
我有一個我運行的Java進程。如果我通過SSH啓動進程並將命令傳遞給它,但如果我終止SSH會話,則會失去對進程的「控制」。我怎樣才能重新獲得對這個過程的「控制」?它仍在運行。將命令傳遞給運行java進程?
我知道進程的ID。這是可能的還是必須重新啓動過程?
你可能要開始屏幕。
嘗試在提示符下鍵入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
以獲取更多信息。
使用GNU screen
程序。
沒有辦法以重新連接已斷開那樣的處理的標準的輸入/輸出。這不是特定於Java應用程序。
爲了避免陷入這種情況下,使用screen
實用程序或類似的東西運行應用程序。
我一直在使用屏幕,也許你可以幫助解決這個問題。我試圖發送一個命令到一個detatched進程,該手冊說使用-X操作符,但它似乎沒有工作。 如果我的屏幕進程ID是123,並且我想將命令「reboot」發送到我的進程,那麼語法是什麼? 屏幕-S 123 -X「重新啓動」不起作用。 – sam 2010-06-20 14:27:05
看看http://www.mail-archive.com/[email protected]/msg35519.html – aioobe 2010-06-20 14:33:30
啊哈!這有用,謝謝。我確實還有一個問題。如果我想「模仿」我使用-X輸入內容,我怎麼能做到這一點?這個程序響應我輸入「你好」,但「你好」是一個無法識別的命令。有沒有我用來模擬打字的特殊字符? – sam 2010-06-20 14:40:48