psのマンページから
tid TID the unique number representing a dispatchable
entity (alias lwp, spid). This value may also
appear as: a process ID (pid); a process group
ID (pgrp); a session ID for the session leader
(sid); a thread group ID for the thread group
leader (tgid); and a tty process group ID for
the process group leader (tpgid).
tgid TGID a number representing the thread group to which
a task belongs (alias pid). It is the process
ID of the thread group leader.
Ubuntuでは、ps -o pid,tid,tgid,cmd
tidとtgidは常にユーザープロセスとカーネルスレッド(私が実行している)のpidと同じようです。これはLinuxでも本当ですか?なぜ?
System VやBSDなどの他のUnixでもこれは本当ですか?
ありがとうございます。
答え1
ps
スレッド情報を表示する作業が必要です。それ以外の場合は、プロセスのみが一覧表示されます。
ps -eL -o pid,tid,comm | awk '$1 != $2'
各プロセスのメインスレッドを除くすべてのスレッドを表示します。つまりPID と TID が異なるプロセステーブルのエントリです。重要なオプションは、-L
このオプションがない場合は、ps
同じpidとtidを持つ項目のみが一覧表示されることです。
FreeBSDでは同等のオプションがあります-H
。他のBSDやSystem Vでは確認していません。