1. 程式人生 > >Linux 叢集上批量執行同一命令 shell 指令碼

Linux 叢集上批量執行同一命令 shell 指令碼

因實際開發需要,在叢集上多個機器上執行相同的命令,比如執行一個指定的指令碼、刪除相同目錄下的檔案(這個得慎重~~)等,組內的成員開發了一個 allscp (可以批量執行scp 命令來同步線上程式碼)非常好用,我自己也寫了一個,主要是使用ssh 登陸到一個伺服器上,然後執行一個指定的命令。 

先貼Shell 程式碼:

#!/bin/bash
if [ "$#" -ne 2 ] ; then
    echo "USAGE: $0 -f server_list_file cmd"
    exit -1
fi

file_name=$1
cmd_str=$2

cwd=$(pwd)
cd $cwd
serverlist_file="$cwd/$file_name"

if [ ! -e $serverlist_file ] ; then
    echo 'server.list not exist';
    exit 0
fi

while read line
do
    #echo $line
    if [ -n "$line" ] ; then
        echo "DOING--->>>>>" $line "<<<<<<<"
        ssh $line $cmd_str < /dev/null > /dev/null
        if [ $? -eq 0 ] ; then
            echo "$cmd_str done!"
        else
            echo "error: " $?
        fi
    fi
done < $serverlist_file

程式碼很簡單,不解釋。 

使用方法:

1. 新建一個檔案host_file_list,檔案中為伺服器的地址,每個一行;

2. 儲存上面shell 指令碼, 如儲存為 allcmd.sh,注意使用 chmod +x allcmd.sh 使之成為可執行指令碼;

3. 執行 allcmd.sh  host_file_list md 即可, host_file_list 是第1步的檔名(記得和 allcmd.sh 放在相同目錄下), cmd 就是要執行的命令,用單引號包起來,例如:刪除/home/nuaazdh/下面的一個 tmp.txt 檔案:  allcmd.sh host_file_list  'rm /home/nuaazdh/tmp.txt' 

4. done!



相關推薦

Linux 叢集批量執行同一命令 shell 指令碼

因實際開發需要,在叢集上多個機器上執行相同的命令,比如執行一個指定的指令碼、刪除相同目錄下的檔案(這個得慎重~~)等,組內的成員開發了一個 allscp (可以批量執行scp 命令來同步線上程式碼)非常好用,我自己也寫了

Kettle 叢集(cluster)在多個伺服器(windows、linux併發執行

Kettle叢集(cluster)在多個伺服器(windows、linux)上併發執行目錄不管是linux下還是windows下部署kettle前提是機器上都已安裝JDK。其次把kettle的安裝檔案解壓後即可。Windows下啟動spoon.bat;linux下啟動spoo

linux watch——重複執行同一命令

實際操操作過程中,經常會遇到重複執行同一命令,以觀察其結果變化的情況,以前經常是上下鍵加回車,或是Ctr+p然後回車的方式。現在告訴大家一個好用的命令——watch,它可以全屏執行這個命令,並顯示執行結果。例如:#watch uptime #watch -t uptime #

Linux遠端拷貝&遠端執行命令shell指令碼

很多時候linux伺服器管理、釋出程式碼等,通常需要兩個工具,一個是遠端拷貝,一個是遠端執行命令,下面介紹兩個比較好用的指令碼,實現這兩個功能。 需要安裝expect,遠端執行命令,centos下直接yum -y install expect,不能yum安裝下

批量複製及執行命令shell指令碼

平時在處理一個或幾個機器執行環境時,一個機器一個機器處理也能接受,但是如果是一批機器,幾十或幾百臺,要是一臺一臺去安裝環境,光是輸入同一的命令,估計你自己都想吐,所有聰明的人會想一些偷懶的辦法,確實可以找到一些省時省力的方法,比如寫一個批量處理shell指令碼,這幾天在處理一批(八九十臺)機器環境,找了一些批

[一天幾個linux命令] shell指令碼之正則表示式

shell指令碼之正則表示式 原文連結:Linux–shell指令碼之正則表示式 概念及特點 概念 正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定的字元、及這些特定字元的組合,組成一個"規則字串",這個"規則字串"用來表達對字串的一種過濾邏輯。規定一些特殊語

javaWeb專案釋出到linux伺服器以及執行專案

1、將建立的web專案,上傳到伺服器之前需確認web.xml各引數是否正確,一定不要忘了確認一下Mysql的驅動jar包是否載入到lib包,url屬性value值設定成jdbc:mysql://伺服器的IP/埠號/資料庫名 2. 把做好的專案匯出 :點選file選項後選擇export,後選擇We

大資料學習筆記(Map Reduce在叢集執行架構)

MR1.X執行架構 JobTracter 核心,主,單點 排程所有的作業 監控整個叢集的資源負載 TaskTracter 從,自身節點資源管理 和JobTracter心跳,彙報資源,獲取Task Client 作業為單位 最終提交作業到JobTracker

在伺服器批量執行test資料

  今天要在伺服器上批量的跑測試程式碼,因為每個測試的模型和模型引數不同,所以每次都要手動的來修改test.py檔案中固定位置的引數,以及重新命名test.py檔案,然後再執行test_xxxx.py檔

Linux 執行定時任務 shell指令碼

Linux上面執行定時任務,我們可以利用crontab -e直接編輯定時任務 另外我們還可以寫好shell指令碼,定時去執行shell指令碼,這兩個方法都可以起到定時執行的作用 下面我詳細說一下入如何執行shell指令碼 1.宣告一下我安裝的lnmp環境,shell指令碼存

Linux系統中執行.sh(Shell指令碼)檔案

      其中,以絕對路徑執行方法:       (1)./home/test/shell/hello.sh,可以這樣執行是因為當前登入使用者是root,當前路徑是在/下,. 代表當前路徑。       (2)/home/test/shell/hello

linux伺服器tomcat執行遇到的問題

問題描述:當tomcat啟動成功後,訪問web伺服器,請求失敗。導致失敗的原因之一可能就是防火牆將8080埠或者其他埠攔截掉了,我們需要重新開放8080或者其他埠,不建議關閉防火牆。 1.安裝 iptables-services yum install iptables-servic

Linux、centos 批量殺死程序命令

平時我們在殺死 同一類很多程序時,一個一個殺死太麻煩了! 用下面的命令一次性批量殺死 ps aux | grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9 xxx 為程序名 例如 ps aux | gr

linux和Windows檔案不相容(shell指令碼執行錯誤 $'\r': command not found)

背景 將linux通過samba服務對映到windows平臺,在win平臺下建立一個指令碼,然後切換到linux下執行,報錯$’\r’: command not found。 原因 win平臺下的換行是:回車符 + 換行符,也就是\r\n。unix下是換行符\n。linux下

Linux叢集部署Spark之前準備

在Linux叢集上部署Spark Spark安裝部署比較簡單, 使用者可以登入其官方網站(http://spark.apache.org/downloads.html) 下載Spark最新版本或歷史版本,也可以查閱Spark相關文件作為參考。本書開始寫作時,本章所述的環境搭建均以Spar

ssh遠端到目標機器執行命令shell指令碼

  linux下ssh到目標機器首先需要配置免密碼登陸,才能執行如下指令碼   hostnames伺服器列表檔案 master.hadoop w1.hadoop w2.hadoop w3.hadoop

Linux下如何定時執行mysql命令

1、Linux中的定時任務: 1-1.Linux中每行定時任務的描述格式如下: minute hour day month dayofweek command minute - 從0到59的整數

面試linux運維一定會問到Shell指令碼這24個問題

  面試linux運維一定會問到Shell指令碼這24個問題   雖然現在Python在運維工作中已經使用很普遍,但是很多企業在找Linux雲端計算工程師的時候還是會問到 shell 指令碼的問題,它有助於你在工作環境中自動完成很多工。   如下是一些面試過程中,經常會遇到的 shell 指令碼面試問

Linux入門學習筆記(五)--Shell指令碼編寫

Shell指令碼的HelloWorld:     cd /自己的路徑下     vi helloworld.sh 進入之後,預設是命令狀態,按i進入編輯模式     內容:         #! /bin/bash         echo "Hello World!"   

kafka叢集一鍵啟動與停止shell指令碼

kafka叢集一鍵啟動與停止shell指令碼 準備工作: 已經配置了主機與ip對映關係,已經配置了免密登入; 一、啟動Kafka叢集的指令碼 自定義start_kafka_byfang.sh,啟動kafka叢集中所有節點 #!/bin/bash BROKERS="hx