LoginSignup
16
14

More than 5 years have passed since last update.

ShellScript 内での並列処理

Last updated at Posted at 2013-12-22

ShellScript 内で並列処理をする方法を調べたのでメモ

以下の例は、複数IPアドレスへのPingを並列処理している

exec_ping() はPingを実施する関数(Pingが成功する迄3回実施している)
seq -f "192.168.100.%g" 1 10 は対象IPアドレス(192.168.100.1 ~ 10)

#!/bin/bash

exec_ping(){
        IP_ADDR=$1

        ping -c 1 $IP_ADDR > /dev/null 2>&1 || sleep 1 ; \
        ping -c 1 $IP_ADDR > /dev/null 2>&1 || sleep 1 ; \
        ping -c 1 $IP_ADDR > /dev/null 2>&1

        echo $IP_ADDR $?
}

export -f exec_ping

seq -f "192.168.100.%g" 1 10 | xargs -n 1 -P 10 -I % bash -c "exec_ping %"

xargs -n 1 -P 10 -I % bash -c "exec_ping %" 部分で exec_ping() を10プロセス同時実行

環境に合わせて exec_ping() 部分を変更することで上手く動作するはず

16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14