这是一个相当便携的函数,用于获取可用的处理器数量sh:
nprocLinux上.getconf作为备用,它是和的coreutils的一部分.LinuxDarwin (苹果系统)FreeBSD,NetBSD,OpenBSD...可能是其他人,随意测试:)
随意建议添加:
#!/bin/sh
portable_nproc() {
OS=$(uname -s)
if [ "$OS" = "Linux" ]; then
NPROCS=$(nproc --all)
elif [ "$OS" = "Darwin" ] || \
[ "$(echo $OS | grep -q BSD" = "BSD" ]; then
NPROCS=$(sysctl -n hw.ncpu)
else
NPROCS=$(getconf _NPROCESSORS_ONLN) # glibc/coreutils fallback
fi
echo "$NPROCS"
}
# test
portable_nproc
Run Code Online (Sandbox Code Playgroud)
覆盖许多系统的更简洁的命令是检查getconfglibc,然后检查sysctlBSD系列的Unix:例如:
getconf _NPROCESSORS_ONLN 2>/dev/null || sysctl -n hw.ncpu
Run Code Online (Sandbox Code Playgroud)
我稍微倾向于检查每个平台,因为它允许更容易地添加其他平台,但实际上单线在许多情况下都有效.
nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null
Run Code Online (Sandbox Code Playgroud)