簡體   English   中英

檢查 PF_NO_SETAFFINITY 的值

[英]Check value of PF_NO_SETAFFINITY

是否可以判斷進程/線程是否設置了PF_NO_SETAFFINITY標志? 我在一系列進程 ID 上運行任務集,有些正在拋出以下形式的錯誤:

taskset: failed to set pid 30's affinity: Invalid argument

我相信這是因為某些進程設置了PF_NO_SETAFFINITY (請參閱答案)。

謝謝!

是的 - 查看/proc/PID/stat的“標志”字段

<linux/sched.h

#define PF_NO_SETAFFINITY 0x04000000        /* Userland is not allowed to meddle with cpus_allowed */

在此處查看有關使用 /proc 的詳細信息:

例子:

ps -eaf
www-data 30084 19962  0 07:09 ?        00:00:00 /usr/sbin/apache2 -k start
...

cat /proc/30084/stat
30084 (apache2) S 19962 19962 19962 0 -1 4194624 554 0 3 0 0 0 0 0 20 0 1 0 298837672 509616128 5510 18446744073709551615 1 1 0 0 0 0 0 16781312 201346799 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0

標志是4194624


問:您是否介意指定如何編寫一個簡單的腳本,根據是否允許設置關聯來輸出真/假?

A:如果沒有機會進行測試,我覺得舒服,但是你可以嘗試這樣的事情......

flags=$(cut -f 9 -d ' ' /proc/30084/stat)
echo $(($flags & 0x40000000))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM