Linux

尋找方便的方法來查找執行目前腳本的 CPU 編號

  • October 1, 2017

我想實現一個簡單的展示腳本,列印主機的名稱和執行腳本的 CPU 數量。

hostname -s負責輸出的第一部分。有沒有類似的方便的方法來獲取 CPU 編號?

(我知道,一般來說,一個程序可能包含多個執行緒,這些執行緒可能在多個 CPU 上執行。但是,在這裡,我假設腳本在單個執行緒上執行。)

這類似於上面 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 欄位——程序目前分配到的處理器。

我相信這就是您正在尋找的內容,儘管此腳本通常在多個執行緒上執行。我相信這也不會非常準確,因為腳本會創建一個程序組。這是搜尋腳本中的許多命令將在該程序組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}')"

引用自:https://unix.stackexchange.com/questions/395395