db7fac3f24
git-svn-id: https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Core/OpenFOAM-1.5-dev@1731 e4e07f05-0c2f-0410-a05a-b8ba57e0c909
138 lines
4.1 KiB
Bash
Executable file
138 lines
4.1 KiB
Bash
Executable file
#!/bin/sh
|
|
#------------------------------------------------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright held by original author
|
|
# \\/ M anipulation |
|
|
#-------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM.
|
|
#
|
|
# OpenFOAM is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by the
|
|
# Free Software Foundation; either version 2 of the License, or (at your
|
|
# option) any later version.
|
|
#
|
|
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
# for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with OpenFOAM; if not, write to the Free Software Foundation,
|
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
#
|
|
# Script
|
|
# foamDistccd
|
|
#
|
|
# Description
|
|
# Script to control distccd daemons. (distcc/distccd is a distributed
|
|
# C/C++ compilation frontend). Distccd daemons need to be running
|
|
# on all platforms one wants to build on. The platforms are specified
|
|
# in the DISTCC_HOSTS environment variable.
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
printUsage()
|
|
{
|
|
echo "Usage : `basename $0` start|stop|list"
|
|
echo ""
|
|
}
|
|
|
|
RSH='ssh'
|
|
|
|
if [ ! "$DISTCC_HOSTS" ]; then
|
|
echo "`basename $0`: variable DISTCC_HOSTS not set."
|
|
echo "`basename $0`: please set DISTCC_HOSTS to the list of hosts to use."
|
|
echo "`basename $0`: the format is host1:port host2:port host3:port etc."
|
|
echo ""
|
|
|
|
exit 1
|
|
fi
|
|
|
|
if [ $# -ne 1 ]; then
|
|
printUsage
|
|
exit 1
|
|
fi
|
|
|
|
|
|
if [ "$1" = 'start' ]; then
|
|
|
|
grep -v '^#' /etc/hosts | awk '{print $1, $2 " "}' > ~/filteredHosts.txt
|
|
|
|
allowIPS=''
|
|
for host in $DISTCC_HOSTS
|
|
do
|
|
machine=`echo "$host" | awk -F: '{print $1}'`
|
|
iptest=`echo "$machine" | sed -e 's/[0-9.]//g'`
|
|
if [ ! "$iptest" ]; then
|
|
# address only contained 0-9 and '.'. Probably ip address.
|
|
ip=$machine
|
|
else
|
|
# address probably not ip address. Try searching /etc/hosts
|
|
ip=`egrep " $machine " ~/filteredHosts.txt | awk '{print $1}'`
|
|
fi
|
|
|
|
if [ ! "$ip" ]; then
|
|
echo "$0 : host specifier $host either is not an ip address or cannot be found in /etc/hosts."
|
|
echo "$0 : Exiting."
|
|
exit 1
|
|
fi
|
|
|
|
allowIPS="$allowIPS --allow $ip"
|
|
done
|
|
echo "allowIPS=$allowIPS"
|
|
|
|
for host in $DISTCC_HOSTS
|
|
do
|
|
echo ""
|
|
echo "Trying to start distccd on host $host ..."
|
|
|
|
machine=`echo "$host" | awk -F: '{print $1}'`
|
|
port=`echo "$host" | awk -F: '{print $2}'`
|
|
|
|
if [ "$machine" -a "$port" ]; then
|
|
#echo "Machine:$machine port:$port"
|
|
echo "distccd --daemon $allowIPS --port $port"' --jobs `egrep "^processor" /proc/cpuinfo | wc -l`'
|
|
$RSH $machine "distccd --verbose --daemon $allowIPS --port $port"' --jobs `egrep "^processor" /proc/cpuinfo | wc -l`'
|
|
else
|
|
echo "$0 : host specifier $host not in correct form machine:port."
|
|
echo "$0 : Exiting."
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
elif [ "$1" = 'stop' ]; then
|
|
|
|
for host in $DISTCC_HOSTS
|
|
do
|
|
echo ""
|
|
echo "Trying to stop all distccd on host $host ..."
|
|
|
|
machine=`echo "$host" | awk -F: '{print $1}'`
|
|
|
|
$RSH $machine killall distccd
|
|
done
|
|
|
|
|
|
elif [ "$1" = 'list' ]; then
|
|
|
|
for host in $DISTCC_HOSTS
|
|
do
|
|
echo ""
|
|
echo "Trying to find process distccd on host $host ..."
|
|
|
|
machine=`echo "$host" | awk -F: '{print $1}'`
|
|
|
|
$RSH $machine "ps -ef | grep distccd | grep -v grep"
|
|
done
|
|
|
|
else
|
|
|
|
printUsage
|
|
exit 1
|
|
|
|
fi
|
|
|
|
#------------------------------------------------------------------------------
|