gpt4 book ai didi

shell - 在 shell 脚本中查找处理器/CPU 数量的可移植方法?

转载 作者:行者123 更新时间:2023-12-04 22:09:58 24 4
gpt4 key购买 nike

由于编写将作业数量传递给命令的 shell 脚本是很常见的,我很想知道在主流 * Unix 系统上获取处理器数量的一种好的、可移植的方法是什么。

东西like this但不依赖于 Python。

* 对于主流,我的意思是可以在当今生产中使用的流行 Unix 系统上运行(Linux/BSD's/Darwin?但越便携越好)。

最佳答案

这是一个相当便携的函数,用于获取 sh 中工作的处理器数量, bash和兼容的 shell :

  • 用途 nproc在 Linux 上。
  • 使用 getconf作为后备,它是 coreutils 的一部分。
  • 经测试可用于:
  • Linux
  • Darwin (macOS)
  • 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

    涵盖许多系统的更简洁的命令是检查 getconf对于 glibc,然后 sysctl对于 Unix 的 BSD 系列:例如:
    getconf _NPROCESSORS_ONLN 2>/dev/null || sysctl -n hw.ncpu
    我稍微倾向于检查每个平台,因为它允许更轻松地添加其他平台,但实际上单行在许多情况下都有效。

    关于shell - 在 shell 脚本中查找处理器/CPU 数量的可移植方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45181115/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com