Linuxでは、各プロセスと各スレッドに異なるpidがあります。 os.kill
スレッドpidとタスクpidのどちらがあるかはps
関係ありませんが、通常はスレッドpidは表示されません。
たとえば、私のマシンでは、PID8502のプロセスがスレッドを実行しています。これは次のように表示されます。
$ ls /proc/8502/task/
8502 8503 8504 8505 8506 8507 8511 8512 8514 8659
8503はプロセスリストに表示されないことに注意してください
$ ps aux | grep [8]503
$
しかし、さらにいくつかのps
引数を使用すると、それを見ることができます
$ ps -eLf | grep [8]503
ncw 8502 1 8503 0 10 10:00 ? 00:00:00 /usr/lib/virtualbox/VBoxSVC --automate
(Greping for[8]503
は、が表示されないことを意味しgrep
ます-これは古いUNIXのトリックです!)
それが生きているかどうかを見てみましょう
$ python
Python 2.6.4 (r264:75706, Nov 2 2009, 14:44:17)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Loaded customisations from '/home/ncw/.pystartup'
>>> import os
>>> os.kill(8503, 0)
>>>
これはあなたの問題を複製します。
あなたがそうするなら私は思う
ls /proc/*/task/5555
また
ps -eLf | grep [5]555
犯人のスレッドが表示されます。