試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

lsofとGLSOFについて

  1. lsofについて
  2. GLSOF

lsofについて

lsofは、プロセスが使用しているファイルやTCP/IPの特定のポート番号を使用したプロセスを調べることができる。
実行するのに管理者権限が必要な場合があり、ビルド時の設定(HASSECURITYやHASNOSOCKSECURITY)による。手元のGentooでは管理者権限は不要になっているため、下の例は一般ユーザで実行している。

(「notepad」で始まるプロセスが使用しているTTFフォントを表示)
$ lsof -c notepad | grep ttf
notepad.e 12690 user  mem    REG                8,8 3353352     618964 /usr/share/fonts/ipamonafont/ipagui-mona.ttf
notepad.e 12690 user  mem    REG                8,8    6136     474325 /usr/share/wine/fonts/marlett.ttf

(HTTPクライアントにおけるポートの状態確認の例)
$ lsof -i:http
COMMAND     PID USER   FD   TYPE  DEVICE SIZE NODE NAME
firefox-b 13879 user   46u  IPv4 2036648       TCP [ローカルIP]:[ローカルポート]->[リモートIP]:http (ESTABLISHED)
firefox-b 13879 user   49u  IPv4 2036649       TCP [ローカルIP]:[ローカルポート]->[リモートIP]:http (ESTABLISHED)

(ポートの待ち受け状態確認の例)
$ lsof -i:10025,10110
COMMAND     PID USER   FD   TYPE  DEVICE SIZE NODE NAME
thunderbi 12575 user   14u  IPv4 2030858       TCP localhost:10025 (LISTEN)
thunderbi 12575 user   15u  IPv4 2030859       TCP localhost:10110 (LISTEN)

使い方については
[id:hogem:20070223:1172221315]
も参照。
他の変わった使い方として、ファイルの削除後で、かつそのファイルが現在いずれかのプロセスにより使用されている場合に限り、誤って消してしまったファイルの復元に使うことも可能。
このURLのページの要領で実験したところ、確かにファイルは復元できた。「消したファイルが使用中」という限定された状況でのみ有効だが、知っていると何かの役に立つ可能性はある。

GLSOF

GLSOF(glsof.sourceforge.net)は、結果の自動更新機能を持ったlsofGUIフロントエンド。GTK+ 2の他にGNOMEのライブラリも要求する。
検索の条件(結果の絞り方)を「クエリ」として左側に登録し、結果を自動もしくは手動で更新する。
更新を行うとlsofが実行され、クエリ名の下に該当プロセスがぶら下がる形で表示され、各プロセスを選択すると、プロセスごとの詳細が右側にグラフィカルに一覧表示される。
プロセス詳細は上の「Search:」の部分から各項目(プロセスIDやユーザID、使用ファイルなど)もしくは任意の項目から検索を行うこともできる。

結果の自動更新は「Autorefresh options」の

  • Timestep(s): 更新の間隔(秒単位・短すぎてもダメ)
  • Number of autorefreshes: 更新する回数

で指定後、「実行」のボタンを押す(途中で止めることも可能)。更新中の数秒は結果が見えなくなるため、あまり間隔を短くしすぎても使いにくい。
(2015/1/10)このツールはその後FilemonitorQueriesの2つのツール群として変わっている。

関連URL:

  • opentechpress.jp/developer/06/11/23/0451251.shtml

使用したバージョン:

  • lsof 4.78(4.78-r2)
  • GLSOF 0.10.0-pre-alpha4