2014-11-25 87 views
1

你能幫我解決下面的問題嗎?等待一個完成的過程

我必須發送一個命令到一個主機(命令需要大量的時間來執行,並創建一個文件):這個命令得到執行

ssh [email protected] ssh [email protected] 'command1' 

後,我需要壓縮的文件中創建

ssh [email protected] ssh [email protected] 'gzip file1' 

比做同樣的事情的另一臺主機

ssh [email protected] ssh [email protected] 'command1' 
ssh [email protected] ssh [email protected] 'gzip file2' 

是否有可能同時運行這個命令是爲了節省腳本執行的時間而並行執行的? 預先感謝您。

+0

你對'兩個命令'是什麼意思? 'command1'和'gzip'? – Jdamian 2014-11-25 12:24:53

+0

可能重複的[bash:在後臺啓動多個鏈接命令](http://stackoverflow.com/questions/161252/bash-start-multiple-chained-commands-in-background) – l0b0 2014-11-25 12:38:14

+0

我需要運行命令背景並在完成時通知我。 因爲該命令是一個依賴的(變化)我不能把這些命令放在遠程主機! – Ardit 2014-11-25 12:55:22

回答

4

嘗試像

ssh [email protected] 'command1 && gzip file1' & 
ssh [email protected] 'command1 && gzip file1' & 
ssh [email protected] 'command1 && gzip file1' & 

你可以把所有的命令在一個文件中,你從

&&在這種情況下啓動主機上的工作方式類似於;但第二個命令僅在第一次執行作品

+0

你錯過了最初的'ssh',但這是正確的想法。 – chepner 2014-11-25 12:30:49

+0

事實上,該命令是一個變量(依賴輸入),所以我不能把它們放在遠程主機的文件中。 – Ardit 2014-11-25 12:45:47

+1

下面是如何從「開始」主機傳遞一個變量''X =「fish」ssh -t host1 ssh -t host2「echo $ X; uname; hostname」''''' shell啓動命令,所以$ X從那裏設置 – Vorsprung 2014-11-25 14:52:37

2

簡單地做:

ssh [email protected] ssh [email protected] 'command1; gzip file1' 

,如果使用gzip應該只運行的第一個命令是成功的,那麼:

ssh [email protected] ssh [email protected] 'command1 && gzip file1' 

第二個命令將在第一個之後推出。

+0

如果我使用 ssh uname1 @ host1 ssh uname2 @ host2'command1; gzip file1'& 該命令在後臺運行,如何知道它已完成,以便我可以通過ftp/sftp獲取文件? – Ardit 2014-11-25 12:59:40