[小技巧] Linux下判断一个线程是否为内核线程

来源:互联网 发布:js酷炫特效 编辑:程序博客网 时间:2024/05/21 17:23

使用如下的脚本:

主要是 /proc/pid/stat 有一个域是表示内核的标志。

其中0x00200000 表示其是否为内核线程。

另外,可以使用 ps 命令来判断,命令带有 [] 的为内核线程

(但这个不太准确,比如执行如下命令,输出的ps也为[])

perl -e '$0 = ""; sleep'

#!/bin/shif [ $# == 0 ] ; then    echo "input pid value!"    exit 1fiif [ ! -f "/proc/$1/stat" ] ; then    echo "no such process!"    exit 1fiflag=$(cat /proc/$1/stat  | awk '{print $9}' )result=$(gdb -q -ex "p/x $flag & 0x00200000" --batch)result=$(echo $result | sed -e 's/$1 =//')if [ $result == "0x0" ] ; then    echo " not kernel thread"else    echo " kernel thread"fi


0 0
原创粉丝点击