hakeの日記

Windows環境でプログラミングの勉強をしています。

lsof - 使用中のファイルを探す

以前、cooldadさんの「メール起動の怪」にコメントつけさせていただいたのですが、SDカードを取り外そうと画面右下のSDアイコンをタップするとメールをマルチメディア辞書が起動して挙句にSDカード取り外しに失敗するという現象が発生していました。

今日2ちゃんねるのスレッドを読んでいたところlsofというコマンドを利用すれば原因を突き止められるという書き込みを発見して早速実行。lsofのftpサイト(ftp://vic.cc.purdue.edu/pub/tools/unix/lsof/)からソースを持ってきてセルフコンパイルしようしたのですが上手く行かなかったので、ザウルス用のパッケージがないか探したところこちらでバージョン4.57のパッケージを見つけました。
ターミナルから実行してSDカード(/usr/mnt.rom/card)に関係している情報をピックアップしてみます。

$ lsof | grep /usr/mnt.rom/card

qpe       7266   root  mem    REG       60,1    1568       504
 /usr/mnt.rom/card/backup/.anthy/private_dict_default.tt
qpe       7266   root   21u   REG       60,1    1568       504
 /usr/mnt.rom/card/backup/.anthy/private_dict_default.tt


$ lsof /usr/mnt.rom/card/backup/.anthy/private_dict_default.tt

COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
qpe     7266 root  mem    REG   60,1 1568  504 /usr/mnt.rom/card/backup/.anthy/private_dict_default.tt
qpe     7266 root   21u   REG   60,1 1568  504 /usr/mnt.rom/card/backup/.anthy/private_dict_default.tt

詳しい見方がわかりませんけど、SDカードにある.anthy/private_dict_default.ttというファイルが使用中であるようです。これはザウルス再起動後にはSDカードの取り外しが可能なのにAnthyを用いた日本語変換を行った後は取り外しが不可能になることに合致します。
というわけで原因はanthyの辞書ファイルでした(メールと辞書が起動するのは依然として不明ですけど)
対策はやっぱりAnthy関連ファイルをHDD上に持ってくるしかないのかなぁ。


それはともかくこのlsofといコマンドは何がファイルを開いているかだけでなくて、TCPポートについても調査ができるのでいろいろと使いでがありそうな気がします。

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/652chkopenuser.html
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/664useportps.html