2013-06-18 163 views
0

請原諒我,如果這是我剛剛完全錯過了,但是,我有一個遠程服務器(NAS),我想啓動一個命令運行,而我有些在當地工作。現在,我相信我大概可以用以下命令做到這一點:離開在遠程服務器上運行的命令

ssh [email protected] 'cp -Rl /foo/bar /bar/foo' 

不過,我需要從命令的一部分,我的主要腳本返回值,所以我需要它返回,但離開cp命令運行。例如:

foo=$(ssh [email protected] <<- REMOTE_COMMANDS 
    cp -Rl /foo/bar /bar/foo & 
    echo "foobar" 
REMOTE_COMMANDS) 

不過,我不相信這將返回直到cp命令已完成,但如果我用exit我認爲cp中斷?

是否有另一種方式離開cp運行,或者我將需要運行兩個ssh命令(一個用於cp,一個得到的返回值,我需要?)

+0

使用'screen'或'tmux',如果您願意,您甚至可以在會話後重新連接。 – Wrikken

回答

2

您可以使用一個下列選項:

  • TMUX
  • nohup的
  • 屏幕

tmux & screen是可以拆卸1到N用戶的一些完整的環境。

如果您需要直截了當,請首先查看nohup

+0

不幸的是,它看起來像我的NAS不支持'tmux'或'screen',所以'nohup'應該是,謝謝你的回覆! – Haravikk

1

您可以使用屏幕命令。 只需創建一個新屏幕:screen -R screen_name。 運行您的命令或代碼,然後按ctrl + a + d退出該屏幕。 如果要切換回屏幕,請輸入以下命令:screen -r screen_name。 希望它有幫助。

+1

而不是'屏幕-R',看起來OP最有可能想要在分離模式下啓動它('screen -d -m')。請注意,通過ssh屏幕你可能需要在ssh參數中強制tty分配。 – Wrikken

+0

是的,我認爲這正是OP想要的。 :-) – diggy

相關問題