Skip to content
Snippets Groups Projects
foamGetSystemInfo 2.88 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/bin/bash
    #------------------------------------------------------------------------------
    # =========                 |
    
    Henrik's avatar
    Henrik committed
    # \\      /  F ield         | foam-extend: Open Source CFD
    
    #  \\    /   O peration     | Version:     4.1
    
    Henrik's avatar
    Henrik committed
    #   \\  /    A nd           | Web:         http://www.foam-extend.org
    #    \\/     M anipulation  | For copyright notice see file Copyright
    
    #------------------------------------------------------------------------------
    # License
    
    Henrik's avatar
    Henrik committed
    #     This file is part of foam-extend.
    
    Henrik's avatar
    Henrik committed
    #     foam-extend is free software: you can redistribute it and/or modify it
    
    #     under the terms of the GNU General Public License as published by the
    
    Henrik's avatar
    Henrik committed
    #     Free Software Foundation, either version 3 of the License, or (at your
    
    #     option) any later version.
    #
    
    Henrik's avatar
    Henrik committed
    #     foam-extend 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
    
    Henrik's avatar
    Henrik committed
    #     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
    
    #
    # Script
    #     foamGetSystemInfo
    #
    # Description
    #     return system information about running host/system
    #
    # Author:
    #     Martin Beaudoin, Hydro-Quebec, (2013)
    #
    #------------------------------------------------------------------------------
    usage()
    {
        while [ "$#" -ge 1 ]; do echo "$1"; shift; done
        cat<<USAGE
    
    usage: ${0##*/} [OPTION]
    options:
      -nbrCores  return the number of cores present
      -osInfo [default] return operating system information
    
    * return system information about the running host/system.
    
    USAGE
        exit 1
    }
    
    # Basic operating system information
    getOperatingSystemInfo()
    {
        echo `uname -a`
    }
    
    # Number of cores
    getNbrCores()
    {
        # Minimal number of cores. Can be as low as 1 on virtual machines
        nbrCores=1
    
        # First choice above all: using lstopo from the hwloc package
        if command -v lstopo >/dev/null; then
    
            nbrCores=`lstopo --of console | grep -c Core`
    
        else
            # Using some architecture specific heuristics
    
        case `uname -s` in
            Linux)
                # Warning: this will be wrong if Hyperthreading is enable
                nbrCores=`grep -c processor /proc/cpuinfo`
            ;;
            Darwin)
                nbrCores=`sysctl -n hw.physicalcpu`
            ;;
        esac
    
        fi
        echo $nbrCores
    }
    
    # If no options present, return basic information on operating system
    if [ "$#" -eq 0 ]
    then
        getOperatingSystemInfo
        exit
    fi
    
    # parse options
    while [ "$#" -gt 0 ]
    do
        case "$1" in
        -h | -help)
            usage
            ;;
        -osInfo)
            getOperatingSystemInfo
            shift
            ;;
        -nbrCores)
            getNbrCores
            shift
            ;;
        *)
            usage "unknown option/argument: '$*'"
            ;;
        esac
    done
    
    
    #------------------------------------------------------------------------------