2013-04-23 59 views
0

我做我的功課,但我想我可以在這裏混合蘋果和桔子。我的腳本設計用於運行遠程內聯繫列命令,退出並運行一些附加的LOCAL命令。它必須先遠程完成,因爲這些服務是針對故障轉移代理的。問題是,遠程SSH線路斷開後,整個腳本停止。我不確定爲什麼斷開連接會停止整個腳本。也許退出線是責任?爲什麼我的本地命令未能在同一個腳本遠程SSH命令後運行?

#!/bin/bash 
    # 
    ### Run remote svc restarts and then Local restarts 
    # 
    exec ssh -t REMOTEHOST 'stop svc1; restart svc2; start svc3; exit' 
    (SCRIPT FAILS HERE) 
    ## Run local shell (This works independently, but not in the entire script) 
    rst=`pgrep -n failoversvc` 

    echo "Stopping 1st service at `date | awk '{print $2,$3,$4}'`" && service 1 stop >> SYNCLOG.txt 
      sleep 2 
    echo "Restarting 2nd service at `date | awk '{print $2,$3,$4}'`" && service 2 restart >> SYNCLOG.txt 

    if rst="";then 

    echo "Starting 3rd service at `date | awk '{print $2,$3,$4}'`" && service 3 start >> SYNCLOG.txt 
     else 
     echo "3rd Service PID not found! Check for functionality" 
    fi 

我看了看,但THIS我是不是能夠得到我想要的結果。

回答

3

exec是一個非常殘酷的命令:它完全取代當前進程(在這種情況下,您的外殼,正在運行的腳本)與您指定的命令。除非exec失敗,否則腳本之後的任何內容都不會運行。這是設計,這就是exec的用途。

如果你希望你的腳本到ssh後繼續,只需刪除exec

+0

哇..都因爲一個小的字。現在工作很好,非常感謝! – romeoecho 2013-04-23 18:14:37