寻找便捷的方法来查找运行当前脚本的CPU数量

寻找便捷的方法来查找运行当前脚本的CPU数量

我想实现一个简单的演示脚本,打印主机名称和运行该脚本的 CPU 数量。

hostname -s负责输出的第一部分。有没有类似方便的方法来获取CPU编号?

(据我所知,一般来说,一个进程可能包含多个线程,这些线程可能在多个CPU上运行。但是,在这里,我假设脚本在单个线程上运行。)

答案1

这与上面 Jesse_b 的解决方案类似,但使用其 pid 请求脚本的信息:

#!/bin/bash                                                                     

host=$(hostname -s)                                                             
processor=$(ps -hp $$ -o psr)                                                   

echo "Script running on ${host} on processor ${processor}"

-h选项抑制标头,该-p $$选项选择具有给定 pid 的进程,并且$$是正在运行的脚本的 pid,该-o psr选项仅选择 psr 字段 – 该进程当前分配到的处理器。

答案2

我相信这就是您正在寻找的,尽管该脚本通常在多个线程上运行。我相信这也不会非常准确,因为脚本创建了一个进程组。这是搜索,ppid脚本中的许多命令将pid在该进程组中创建自己的命令。因此,任何已完成并关闭的命令,或该ps -aF行之后启动的任何进程都不会被捕获。

#!/bin/bash
hostname -s
echo -e "Proccess:\t$(pgrep "$(basename $0)")"
echo -e "$(ps -aF | grep "$(pgrep $(basename $0))" | awk '{print "CPU:\t\t"$7}')"

相关内容