Linux
當程序尚未執行時,taskset 如何創建 pid?
我想將處理能力限制在我的機器中只有一個核心,所以我發現
taskset
可以幫助設置一個核心,比如核心 0,如下所示(感謝這個答案):taskset -c 0 -p 45678
問題是,當我的程序還沒有執行時,如何確定這裡的 process_id pid?在這種情況下,我們是否只是設置了一個任意程序 ID 以供 Linux 獲取
45678
?如果是這樣,是否可以在 shell 腳本中執行以下操作:#!/bin/sh # Set the processing unit taskset -c 0 -p 45678 # run python script python main.py
您不能呼叫
taskset
來記錄設置以用於未來的過程。這種呼叫模式taskset
僅適用於目前正在執行的程序。要將新程序固定到核心,請
taskset
在其直接模式下呼叫。你打電話taskset
告訴它要執行什麼程序。taskset -c 0 python main.py
它的工作方式是:
- shell(或其他呼叫程序)創建一個新程序(
fork
)來執行(execve
)taskset -c 0 python main.py
。- 執行的程序
taskset
將核心設置應用於自身。- 該程序在同一程序中執行(
execve
再次) 。python main.py
這是進行其他每個程序設置的方式:當您為單個程序(例如 with
env
)而不是為 shell 會話(例如 withexport
)設置環境變數時,CPU niceness withnice
,重定向(通常通過 shell 語法完成而不是使用單獨的實用程序)等。