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

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

先貼Shell 代碼:

#!/bin/bashif [ "$#" -ne 2 ] ; then    echo "USAGE: $0 -f server_list_file cmd"    exit -1fifile_name=$1cmd_str=$2cwd=$(pwd)cd $cwdserverlist_file="$cwd/$file_name"if [ ! -e $serverlist_file ] ; then    echo 'server.list not exist';    exit 0fiwhile read linedo    #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    fidone < $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。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.