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では、tidとtgidは、ユーザープロセスとカーネルスレッドの両方で常にpidと同じように見えます(私はps -o pid,tid,tgid,cmd
を実行します)。Linuxでもそうですか。その理由は何ですか。
System VやBSDなどの他のUnixでもそうですか?
ありがとう。
スレッド情報を表示するには、タスクps
を実行する必要があります。それ以外の場合は、プロセスのみを一覧表示します。
ps -eL -o pid,tid,comm | awk '$1 != $2'
各プロセスのメインスレッドを除くすべてのスレッドが表示されますつまり pidとtidが異なるプロセステーブルのエントリ。重要なオプションは-L
です。これがないと、ps
はpidとtidが同一のエントリのみを一覧表示します。
FreeBSDでは、同等のオプションは-H
です。他のBSDやSystemVはチェックしていません。