ps 里可以通过线程名是否包括 中括号 来判断是否为内核线程。
如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19360 704 ? Ss Nov17 0:06 /sbin/init
root 2 0.0 0.0 0 0 ? S Nov17 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Nov17 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S Nov17 0:10 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S Nov17 0:00 [migration/0]
root 6 0.0 0.0 0 0 ? S Nov17 0:03 [watchdog/0]
root 7 0.0 0.0 0 0 ? S Nov17 2:40 [events/0]
root 8 0.0 0.0 0 0 ? S Nov17 0:00 [cgroup]
root 9 0.0 0.0 0 0 ? S Nov17 0:00 [khelper]
ps 代码里是通过查看 /proc/pid/cmdline 来进行判断,如果为空则追加 中括号 。