2016-01-22 72 views
0

我試圖在不同的服務器上運行一個jar。所以,在我當前的腳本中,我在該服務器上執行ssh,然後使用nohup運行該jar。但是,nohup.out並未在新服務器上創建。所以,我無法捕捉到錯誤。與ssh一起使用時看不到nohup命令的輸出

如果我手動登錄到該服務器然後激發該jar,nohup.out被創建。有人可以幫助這個嗎?

下面是我寫在我的腳本命令:

sshpass -p $node_pwd ssh -n [email protected]$node "sh -c 'cd mydir;nohup java -jar NodeStarter.jar config.properties > /dev/null 2>&1 &'" 

這裏,節點是我登錄到服務器。 node_pwd是包含該服務器密碼的變量。

回答

0
nohup java -jar blah.jar > /dev/null 2>&1 

在這個例子中,要重定向從標準錯誤到標準輸出的輸出,但你必須已經重定向從標準輸出你的輸出到/ dev/null的。

結果是,你既管道stdout和stderr到/ dev/null的

只輸出去的nohup.out如果它尚未被重定向。

從shell運行命令時,您很可能沒有使用相同的重定向參數。

+0

我試圖運行該命令而不將輸出重定向到/ dev/null,但仍然沒有創建nohup.out。 –

+0

也許它寫在您的主目錄nohup.out而不是mydir,並且您正在尋找mydir?如果標準輸出不是終端,至少有一些nohup版本會在$ HOME中使用nohup.out。 – Tom

+0

我運行了nohup的find命令在每個目錄中搜索它,但我無法找到它。 但是,如果我通過登錄到特定服務器手動運行jar,則會創建nohup.out。 爲什麼會發生這種情況? –

相關問題