我能夠以兩種方式運行遠程腳本。 優先(間接) #ssh 二(SSH連接之後) #ssh # #exit(回主機終端)運行遠程Linux腳本,就好像我在遠程機器上一樣
我認爲有在型溝道轉發一些差異。 換句話說,當我使用第一種方式運行遠程腳本時,腳本的輸出應該不是主機mashine而是遠程第二種方式。
我有兩臺機器uturksat1和uturksat2 在uturksat2中,我有一個Linux腳本(/tmp/runScript.sh)和Java類Provider。 Linux腳本運行Provider java應用程序,它打開一個套接字然後監聽它。
#!/bin/bash
echo "Provider"
$JAVA_HOME/bin/java -cp /tmp Provider&
$JAVA_HOME/bin/java -version
rm /tmp/pid
echo "$!"> /tmp/pid
echo "Provider-finish"
exit 0
在uturksat1機,我有類型以下命令
[email protected]:/tmp# ssh uturksat2 /tmp/runScript.sh
Provider
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)
Provider-finish
Waiting for connection
它不會自動返回命令提示,我必須按CTRL + C以返回
當我有鍵入以下命令:
[email protected]:/tmp# ssh -t uturksat2 /tmp/runScript.sh
Provider
Waiting for connection
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)
Provider-finish
Connection to uturksat2 closed.
[email protected]:/tmp#
Provider應用程序未運行,我可以通過telnet測試它到端口200 4供應商正在收聽。
telnet uturksat2 2004
最後最後一個問題是,供應商使用log4j,以保持其internall日誌,在遠程Linux腳本執行的第一種方式,則不會創建log4j的LOF文件,但在第二個方法是創建。
請詳細解釋您嘗試的命令,輸出結果以及所需的輸出。 'ssh remotehost prog arg'在'remotehost'上運行,''prog'在'arg'上運行,但在本地重定向遠程stdout&stderr。閱讀http://support.suso.com/supki/SSH_Tutorial_for_Linux或其他關於'ssh'的文檔;你可能想要運行'ssh -v' ...來了解發生了什麼 –