日本語 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
GETUTXENT(3) FreeBSD ライブラリ関数マニュアル GETUTXENT(3)
名称
endutxent, getutxent, getutxid, getutxline, getutxuser, pututxline,
setutxdb, setutxent -- ユーザアカウンティングデータベース関数
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <utmpx.h>
void
endutxent(void);
struct utmpx *
getutxent(void);
struct utmpx *
getutxid(const struct utmpx *id);
struct utmpx *
getutxline(const struct utmpx *line);
struct utmpx *
getutxuser(const char *user);
struct utmpx *
pututxline(const struct utmpx *utmpx);
int
setutxdb(int type, const char *file);
void
setutxent(void);
解説
これらの関数は、ユーザログインとログアウトのみならず、システムスタート
アップとシャットダウン、システムのクロックへの変更のような、様々なシステ
ム活動に関するレコードを格納するユーザアカウンティングデータベースを稼働
させます。システムは、それぞれ異なる役割がある、3 つのデータベースに、こ
れらのレコードを格納します:
/var/run/utx.active
現在の活発なユーザログインセッションのログ。このファイルは、伝統
的な utmp ファイルと同様です。このファイルは、ユーザログインとロ
グアウトレコードのような、プロセスに関連するエントリのみを含みま
す。
/var/log/utx.lastlogin
ユーザ毎の最後のユーザログインエントリのログ。このファイルは、伝
統的な lastlog ファイルと同様です。このファイルは、少なくとも一度
ログインしたことがあるユーザのためのユーザログインレコードのみを
含みます。
/var/log/utx.log
追加の日付によってソートされたすべてのエントリのログ。このファイ
ルは、伝統的な wtmp ファイルと同様です。このファイルは、次に説明
されたレコードのタイプを含みます。
これらのデータベースの各エントリは、インクルードファイル <utmpx.h> にある
構造体 utmpx によって定義されます:
struct utmpx {
short ut_type; /* エントリのタイプ. */
struct timeval ut_tv; /* 時間エントリが作成された. */
char ut_id[]; /* レコード識別子. */
pid_t ut_pid; /* プロセス ID. */
char ut_user[]; /* ユーザログイン名. */
char ut_line[]; /* デバイス名. */
char ut_host[]; /* リモートホスト名. */
};
ut_type フィールドは、次の値の 1 つがあるログエントリのタイプを表します:
EMPTY 有効なユーザアカウンティング情報は、なし。
BOOT_TIME システムブートの時間を識別する。
SHUTDOWN_TIME システムシャットダウンの時間を識別する。
OLD_TIME システムクロックが変更された時間を識別する。
NEW_TIME システムクロックが変更された後の時間を識別する。
USER_PROCESS プロセスを識別する。
INIT_PROCESS init プロセスによって spawn されたプロセスを識別する。
LOGIN_PROCESS ログインユーザのセッションリーダを識別する。
DEAD_PROCESS 終了されたセッションリーダを識別する。
タイプ INIT_PROCESS と LOGIN_PROCESS のエントリは、この実装では処理されて
いません。
構造体の中の他のフィールドは、次の通りです:
ut_tv イベントが起こった時刻。このフィールドは、EMPTY を除いて、すべて
のタイプのエントリに使用されます。
ut_id エントリを参照するために使用される識別子。ut_id のために同じ値を
含むデータベースに新しいエントリを書き込むことによって、ログイン
エントリを削除するか、または置き換えるために、この識別子を使用す
ることができます。このフィールドは、タイプ USER_PROCESS,
INIT_PROCESS, LOGIN_PROCESS と DEAD_PROCESS のエントリのみに適用
可能です。
ut_pid ログインセッションのセッションリーダのプロセス識別子。このフィー
ルドは、タイプ USER_PROCESS, INIT_PROCESS, LOGIN_PROCESS と
DEAD_PROCESS のエントリのみに適用可能です。
ut_user ログインセッションに対応しているユーザログイン名。このフィールド
は、タイプ USER_PROCESS と INIT_PROCESS のエントリのみに適用可能
です。INIT_PROCESS エントリについて、このエントリは、通常ログイ
ンプロセスの名前を含んでいます。
ut_line ユーザログインセッションを容易にするために使用されるデバイスに対
応する、先導する /dev/ 接頭辞なしの、TTY キャラクタデバイスの名
前。TTY キャラクタデバイスが使用されていないなら、このフィールド
は、空白のままにされます。このフィールドは、タイプ USER_PROCESS
と LOGIN_PROCESS のエントリのみに適用可能です。
ut_host ユーザログインを実行するために接続された、リモートシステムのネッ
トワークホスト名。ユーザログインセッションがネットワークを越えて
実行されていないなら、このフィールドは、空白のままにされます。こ
のフィールドは、タイプ USER_PROCESS のエントリのみに適用可能で
す。
この実装は、すべての不適切なフィールドが破棄されていることを保証します。
ライブラリ関数によって返された構造体の ut_user, ut_line と ut_host フィー
ルドは、この実装でヌル文字で終了されていることも保証されます。
ユーザアカウンティングデータベースから次のエントリを読み込むために
getutxent() 関数を使用することができます。
getutxid() 関数は、振る舞いが id の ut_type フィールドに基づいているデー
タベースの次のエントリを検索します。ut_type に BOOT_TIME, SHUTDOWN_TIME,
OLD_TIME または NEW_TIME の値があるなら、ut_type に等しい値がある次のエン
トリを返します。ut_type に USER_PROCESS, INIT_PROCESS, LOGIN_PROCESS また
は DEAD_PROCESS の値があるなら、ut_type に、以前に述べられた値の 1 つがあ
り、ut_id が等しい次のエントリを返します。
getutxline() 関数は、ut_type に、USER_PROCESS または LOGIN_PROCESS の値が
あり、ut_line が line の同じフィールドに等しい、データベースの次のエント
リを検索します。
getutxuser() 関数は、ut_type に USER_PROCESS の値があり、ut_user が user
と等しい、データベースの次のエントリを検索します。
以前に述べられた関数は、まだオープンされていないなら、自動的にユーザアカ
ウンティングデータベースをオープンしようと試みます。setutxdb() と
setutxent() 関数によって、ユーザアカウンティングデータベース中のオフセッ
トをリワインドして、データベースは、手動でオープンすることができます。
endutxent() 関数は、データベースをクローズします。
setutxent() データベースは、常にアクティブなセッションデータベースをオー
プンします。setutxdb() 関数は、値が UTXDB_ACTIVE, UTXDB_LASTLOGIN または
UTXDB_LOG のいずれかである type によって識別されるデータベースをオープン
します。file が null でないなら、システムのデフォルトの代わりにファイル名
file でカスタムファイルをオープンします。カスタムファイル名をを使用すると
き、各データベースがそれ自体のファイル形式を使用するかもしれないので、
type は、まだ実際の形式にマッチしなければならないことに、注意しなければな
りません。
pututxline() 関数は、システムのデフォルトのユーザアカウンティングデータ
ベースにレコード utmpx を書き込みます。ut_type の値は、どのデータベースが
変更されているかを決定します。
タイプ SHUTDOWN_TIME, OLD_TIME と NEW_TIME のエントリは、/var/log/utx.log
だけに書き込まれます。
また、タイプ USER_PROCESS のエントリは、/var/run/utx.active と
/var/log/utx.lastlogin に書き込まれます。
ut_id が等しい、対応する USER_PROCESS, INIT_PROCESS または LOGIN_PROCESS
エントリが後で見つけられたなら、タイプ DEAD_PROCESS のエントリは、
/var/log/utx.log と /var/run/utx.active だけに書き込まれます。
さらに、タイプ BOOT_TIME と SHUTDOWN_TIME のエントリによって、
/var/run/utx.active に存在するすべてのエントリは、廃棄されます。
タイプが以前に述べられていないすべてのエントリは、pututxline() のこの実装
によって廃棄されます。また、この実装は、ut_tv の値を無視します。
戻り値
getutxent(), getutxid(), getutxline() と getutxuser() 関数は、成功すれ
ば、言及された制約にマッチする utmpx 構造体へのポインタを返し、ファイルの
終りに到達するとき、またはエラーが発生するとき、NULL を返します。
pututxline() 関数は、成功すれば、ディスクに書き込まれた構造体のコピーを含
む utmpx 構造体へのポインタを返します。提供された utmpx が無効であると
き、または ut_type に DEAD_PROCESS の値があり、フィールド ut_id に等しい
値がある識別子があるエントリが、見つけられなかったとき、NULL を返します。
クローバル変数 errno は、エラー示すように設定されます。
setutxdb() 関数は、ユーザアカウンティングデータベースのオープンが成功した
なら、0 を返します。そうでなければ、-1 を返し、グローバル変数 errno は、
エラーを示す値が設定されます。
エラー
open(2), fdopen(3), fopen(3), fseek(3), に説明されたエラー条件に加えて、
pututxline() 関数は、次のエラーを発生させるかもしれません:
[ESRCH] ut_type の値が、DEAD_PROCESS で、プロセスエントリを見
つけることができませんでした。
[EINVAL] ut_type の値が、この実装によってサポートされていませ
ん。
fopen(3) に説明されたエラー条件に加えて、setutxdb() 関数は、次のエラーを
発生させるかもしれません:
[EINVAL] type 引数が、この実装によってサポートされない値を含ん
でいます。
[EFTYPE] ファイル形式が無効です。
関連項目
last(1), write(1), getpid(2), gettimeofday(2), tty(4), ac(8),
newsyslog(8), utx(8)
規格
endutxent(), getutxent(), getutxid(), getutxline() と setutxent() 関数
は、IEEE Std 1003.1-2008 (``POSIX.1'') に適合するはずです。
pututxline() 関数は、ut_type によって、複数のデータベースファイルにそのレ
コードを書き込むことによって、標準から外れています。これは、他の実装で利
用可能な、updlastlogx() と updwtmpx() 関数のように、他のデータベースを更
新するために特別なユーティリティ関数の必要がありません。また、
USER_PROCESS エントリを格納するとき、アクティブなセッションデータベースの
DEAD_PROCESS エントリを置き換えようとし、ut_id のための同じ値があるエント
リが見つけられません。標準は、データベースの制限のない成長を引き起こすか
もしれない、常に新しいエントリが割り付けられることを必要とします。
getutxuser() と setutxdb() 関数、utmpx 構造体の ut_host フィールドと
SHUTDOWN_TIME は、拡張です。
歴史
これらの関数は、FreeBSD 9.0 で登場しました。それらは、<utmp.h> インタ
フェースに置き換えられました。
作者
Ed Schouten <ed@FreeBSD.org>
FreeBSD 13.2 October 27, 2011 FreeBSD 13.2