日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
FILEMON(4) FreeBSD カーネルインタフェースマニュアル FILEMON(4) 名称 filemon -- filemon デバイス 書式 #include <dev/filemon/filemon.h> 解説 filemon デバイスによって、プロセスは、その複数の子どものファイル操作デー タを集めることができます。デバイス /dev/filemon は、2 つの ioctl(2) 呼び 出しに応答します。 filemon は、セキュリティ監査ツールであることを目的といしていません。多く のシステムコールは、トレースされず、外部の ABI バイナリは、完全に監査され るわけではありません。効率的で、容易に解析可能な形式で、その依存状態を決 定する目的のためにプロセスの監査することを目的としています。これの例は、 よりスマートに追加の構築を扱う .MAKE.MODE=meta でこのモジュールを使用する make(1) です。 システムコールは、次の単一文字を使用して表示されます: `A' openat(2)。次のログエントリは、絶対的なパスが不足しているか、また は不正確です。 `C' chdir(2) `D' unlink(2) `E' exec(2) `F' fork(2), vfork(2) `L' link(2), linkat(2), symlink(2), symlinkat(2) `M' rename(2) `R' 読み込みのための open(2) または openat(2) `W' 書き込みのための open(2) または openat(2) `X' _exit(2) `R' に続く `W' レコードは、R/W のための単一の open(2) または `R' のための 1 つ、`W' のための 1 つの 2 つの個別の open(2) 呼び出しを表わすことができ ることに注意してください。成功したシステムコールだけが捕獲 (capture) され ることに注意してください。 IOCTL ユーザモードのプログラムは、下記に記述されている多くの ioctl を通して filemon ドライバと通信します。各々は、単一の引数を取ります。 FILEMON_SET_FD 供給されたオープンファイル記述子に内部のトレースバッファ を書き込みます。 FILEMON_SET_PID トレースする子プロセスの ID。これは、通常、fork(2) の後 ですが、他の何かの前に、子プロセスの親のプロセスの制御の 下で行われるべきです。下記の使用例を参照してください。 戻り値 ioctl() 関数は、成功するなら、値 0 を返します。そうでなければ、値 -1 が返 され、グローバル変数 errno は、エラーを示す値が設定されます。 エラー FILEMON_SET_FD を付けた ioctl() システムコールは、次の場合に失敗します: [EEXIST] filemon ハンドルが、すでにファイル記述子と関連していま す。 FILEMON_SET_PID を付けた ioctl() システムコールは、次の場合に失敗します: [ESRCH] 指定されたプロセス ID があるプロセスが、存在しません。 [EBUSY] 指定されたプロセス ID が、既にトレースされ、現在のプロ セスではありませんでした。 filemon ファイル記述子の close() システムコールは、ログを書き込んでいる間 に何かのエラーに遭遇するなら、write(2) のエラーで失敗します。また、それは 次の場合に失敗します: [EFAULT] 無効のアドレスが、システムコールのためのログエントリが ない結果となり、トレースされたシステムコール引数のため に使用されました。 [ENAMETOOLONG] トレースされたシステムコールのための引数が、システム コールのためのログエントリがない結果となり、長すぎまし た。 関連ファイル /dev/filemon 使用例 #include <sys/types.h> #include <sys/stat.h> #include <sys/wait.h> #include <sys/ioctl.h> #include <dev/filemon/filemon.h> #include <fcntl.h> #include <err.h> #include <unistd.h> static void open_filemon(void) { pid_t child; int fm_fd, fm_log; if ((fm_fd = open("/dev/filemon", O_RDWR | O_CLOEXEC)) == -1) err(1, "open(\"/dev/filemon\", O_RDWR)"); if ((fm_log = open("filemon.out", O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC, DEFFILEMODE)) == -1) err(1, "open(filemon.out)"); if (ioctl(fm_fd, FILEMON_SET_FD, &fm_log) == -1) err(1, "Cannot set filemon log file descriptor"); if ((child = fork()) == 0) { child = getpid(); if (ioctl(fm_fd, FILEMON_SET_PID, &child) == -1) err(1, "Cannot set filemon PID"); /* ここで何かを行います. */ } else { wait(&child); close(fm_fd); } } filemon.out と名前を付けられたファイルを作成し、それに filemon バッファの 内容を書き込むために filemon デバイスを設定します。 関連項目 dtrace(1), ktrace(1), script(1), truss(1), ioctl(2) 歴史 filemon デバイスは、FreeBSD 9.1 で登場しました。 バグ モジュールをアンロードすることは、システムをパニックにし、したがって、 kldunload -f を使用することを必要とします。 FreeBSD 11.4 March 22, 2016 FreeBSD 11.4