Linux
尋找方便的方法來查找執行目前腳本的 CPU 編號
我想實現一個簡單的展示腳本,列印主機的名稱和執行腳本的 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}')"