2013-10-21 69 views
0

我在屏幕上運行一個進程(在Ubuntu 13.10上,如果它很重要)。我可以在該屏幕執行命令: 屏幕-p 0 -X eval'stuff \「$命令\」\ 015'從screen'd命令獲取返回值

我不是100%確定這個命令在開始時做了什麼,儘管它的功能正常。其背後的原因是我正在運行Minecraft服務器(仍然),並且這將屏幕顯示到正確的屏幕,並在運行命令行中引發該命令。迄今爲止這很好。

但我想要的是能夠用返回值運行此命令。例如,如果我要運行「list」命令,它會告訴我有多少人和誰在線,但我需要捕獲該輸出並將其放在某處。

任何人都知道一種方法來實現這一點?我不能告訴Minecraft服務器命令行將輸出重定向到其他地方,因爲它沒有直接的命令行訪問權限,所以我唯一能做到的方法就是在連接時抓取所有屏幕輸出。 ..但我不確定這是否可能。

回答

1

我想你可能能夠查看日誌?你不能查看服務器的運行日誌嗎?

+0

不完全(除非我誤解)。我想在後臺運行它(或者我只是離開命令行),但仍然能夠從命令行掛接和發送/接收信息。在這方面,我想我可以編寫一個自定義封裝器,該封裝器還在端口上偵聽自定義命令以傳入並響應其輸出,是的,這可能是某種答案。儘管......這比我在這方面花費的方式/努力還要多。希望有一種方法可以從屏幕上獲得stdout,因爲顯然有一種方法可以附加和發送stdin。 – AndyMac

+0

更改回答我的歉意,我以爲你正在尋找一種方法來自己做,我完全知道這將需要很長時間,所以我明白你爲什麼wouldnt。 –

+0

這是一種可能性。我可以發出命令,然後稍等片刻,抓住最新的日誌並解析它們以獲得我期望的輸出......然後在輸出不存在的情況下再次抓取(等待日誌實際寫入,加上可能的緩衝)承擔)。這會起作用(並且比包裝更容易實現)),但是我會打開問題以防萬一有人知道直接捕獲答覆的方式。感謝您的建議! – AndyMac