Man page - wtmp(5)

Packages contains this manual

Available languages:

en fr es it pl ja ru ro de

Manual

UTMP

名 前
書 åŧ
čĒŦ 明
フ ã‚Ą イ ãƒĢ
æē– 拠
過 åŽģ ぎ ã‚ˇ ゚ テ ム と ぎ 比 čŧƒ
æŗ¨ 意
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

utmp, wtmp - ロ グ イ ãƒŗ 記 錞

書 åŧ

#include <utmp.h>

čĒŦ 明

utmp フ ã‚Ą イ ãƒĢ を čĻ‹ る こ と で 、 įž 在 čǰ が ã‚ˇ ゚ テ ム を äŊŋ ãŖ ãĻ い る か と い う 情 å ą が åž— ら れ る 。 た だ す ず ãĻ ぎ プ ロ グ ナ ム が utmp フ ã‚Ą イ ãƒĢ を 更 新 し ãĻ い る わ け で は ãĒ い ぎ で 、 原 際 ãĢ は そ れ äģĨ 上 ぎ ãƒĻ ãƒŧ ã‚ļ ãƒŧ が ã‚ˇ ゚ テ ム を äŊŋ ãŖ ãĻ い る 可 čƒŊ 性 が あ る 。

č­Ļ 告 : (愚 か ãĢ も ) 多 く ぎ ã‚ˇ ゚ テ ム プ ロ グ ナ ム が そ ぎ 整 合 性 ãĢ 䞝 存 し ãĻ い る ぎ で 、 utmp フ ã‚Ą イ ãƒĢ は "other" ãĢ 分 類 さ れ る ãƒĻ ãƒŧ ã‚ļ ãƒŧ ãĢ 寞 し ãĻ 書 き čžŧ ãŋ 可 čƒŊ ãĢ し ãĻ は ãĒ ら ãĒ い 。 フ ã‚Ą イ ãƒĢ ぎ 所 有 者 と グ ãƒĢ ãƒŧ プ ã‚Ē ãƒŧ ナ ãƒŧ äģĨ 外 ぎ ãƒĻ ãƒŧ ã‚ļ ãƒŧ ãĢ 寞 し ãĻ utmp フ ã‚Ą イ ãƒĢ を 書 き čžŧ ãŋ 可 čƒŊ ãĒ įŠļ 態 ãĢ し ãĻ お く と 、 ã‚ˇ ゚ テ ム ぎ ロ グ フ ã‚Ą イ ãƒĢ を åŊ 造 さ れ た り 、 ã‚ˇ ゚ テ ム フ ã‚Ą イ ãƒĢ ぎ 攚 ざ ん を 受 け る と い ãŖ た ãƒĒ ゚ ク を ኝ す こ と ãĢ ãĒ る 。

こ ぎ フ ã‚Ą イ ãƒĢ は utmp 構 造 äŊ“ ぎ įš° り čŋ” し で 構 成 さ れ る 。 こ ぎ 構 造 äŊ“ は <utmp.h> で äģĨ 下 ぎ よ う ãĢ 厚 įžŠ さ れ ãĻ い る (こ こ ãĢ 記 čŋ° し ãĻ あ る ぎ は åšž つ か ぎ 大 ぞ か ãĒ 厚 įžŠ ぎ ãŋ で 、 čŠŗ į´° は libc ぎ バ ãƒŧ ジ ョ ãƒŗ ãĢ よ り 変 わ る こ と ãĢ æŗ¨ 意 が åŋ… čρ で あ る )。

/* Values for ut_type field, below */

#define EMPTY 0 /* Record does not contain valid info
(formerly known as UT_UNKNOWN on Linux) */
#define RUN_LVL 1 /* Change in system run-level (see
init
(1)) */
#define BOOT_TIME 2 /* Time of system boot (in ut_tv ) */
#define NEW_TIME 3 /* Time after system clock change
(in ut_tv ) */
#define OLD_TIME 4 /* Time before system clock change
(in ut_tv ) */
#define INIT_PROCESS 5 /* Process spawned by init (1) */
#define LOGIN_PROCESS 6 /* Session leader process for user login */
#define USER_PROCESS 7 /* Normal process */
#define DEAD_PROCESS 8 /* Terminated process */
#define ACCOUNTING 9 /* Not implemented */

#define UT_LINESIZE 32
#define UT_NAMESIZE 32
#define UT_HOSTSIZE 256

struct exit_status { /* Type for ut_exit, below */
short e_termination; /* Process termination status */
short e_exit; /* Process exit status */
};

struct utmp {
short ut_type; /* Type of record */
pid_t ut_pid; /* PID of login process */
char ut_line[UT_LINESIZE]; /* Device name of tty - "/dev/" */
char ut_id[4]; /* Terminal name suffix,
or inittab(5) ID */
char ut_user[UT_NAMESIZE]; /* Username */
char ut_host[UT_HOSTSIZE]; /* Hostname for remote login, or
kernel version for run-level
messages */
struct exit_status ut_exit; /* Exit status of a process
marked as DEAD_PROCESS; not
used by Linux init(1) */
/* ut_session と ut_tv フ ã‚Ŗ ãƒŧ ãƒĢ ド は 、 32ビ ッ ト で ã‚ŗ ãƒŗ パ イ ãƒĢ さ れ た å ´ 合 と
64ビ ッ ト で ã‚ŗ ãƒŗ パ イ ãƒĢ さ れ た å ´ 合 で 同 じ ã‚ĩ イ ã‚ē で ãĒ け れ ば ãĒ ら ãĒ い 。
こ う す る こ と で 、 32ビ ッ ト と 64ビ ッ ト ぎ ã‚ĸ プ ãƒĒ ã‚ą ãƒŧ ã‚ˇ ョ ãƒŗ で 、
デ ãƒŧ ã‚ŋ フ ã‚Ą イ ãƒĢ と å…ą 有 ãƒĄ ãƒĸ ãƒĒ ãƒŧ を å…ą 有 す る こ と が で き る よ う ãĢ ãĒ る 。 */
#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
int32_t ut_session; /* Session ID ( getsid (2)),
used for windowing */
struct {
int32_t tv_sec; /* Seconds */
int32_t tv_usec; /* Microseconds */
} ut_tv; /* Time entry was made */
#else
long ut_session; /* Session ID */
struct timeval ut_tv; /* Time entry was made */
#endif

int32_t ut_addr_v6[4]; /* Internet address of remote
host; IPv4 address uses
just ut_addr_v6[0] */
char __unused[20]; /* Reserved for future use */
};

/* Backward compatibility hacks */
#define ut_name ut_user
#ifndef _NO_UT_TIME
#define ut_time ut_tv.tv_sec
#endif
#define ut_xtime ut_tv.tv_sec
#define ut_addr ut_addr_v6[0]

こ ぎ 構 造 äŊ“ か ら ãƒĻ ãƒŧ ã‚ļ ãƒŧ ぎ äŊŋ ãŖ ãĻ い る į̝ æœĢ ぎ ゚ ペ ã‚ˇ ãƒŖ ãƒĢ フ ã‚Ą イ ãƒĢ 名 、 ãƒĻ ãƒŧ ã‚ļ ãƒŧ ぎ ロ グ イ ãƒŗ 名 、 ( time (2) åŊĸ åŧ で ぎ )ロ グ イ ãƒŗ 時 åˆģ が わ か る 。 文 字 列 フ ã‚Ŗ ãƒŧ ãƒĢ ド は 、 フ ã‚Ŗ ãƒŧ ãƒĢ ド ぎ 長 さ よ り 文 字 列 が ៭ い å ´ 合 ãĢ は 、 ヌ ãƒĢ バ イ ト ('\0') ãĢ よ ãŖ ãĻ įĩ‚ į̝ さ れ る 。

最 初 ぎ エ ãƒŗ ト ãƒĒ ãƒŧ は init (1) ã‚ŗ マ ãƒŗ ド が inittab (5) を å‡Ļ ᐆ す る こ と で äŊœ ら れ る 。 あ る エ ãƒŗ ト ãƒĒ ãƒŧ を å‡Ļ ᐆ す る 前 ãĢ 、 init (1) は ut_type を DEAD_PROCESS ãĢ 初 期 化 す る 。 ãƒŦ ã‚ŗ ãƒŧ ド ぎ ut_type が DEAD_PROCESS と RUN_LVL ぎ い ず れ で も ãĒ く 、 か つ PID が ut_pid で あ る プ ロ ã‚ģ ゚ が い ãĒ い å ´ 合 は 、 ut_user , ut_host , ut_time を ヌ ãƒĢ バ イ ト で ク ãƒĒ ã‚ĸ し ãĻ 初 期 化 を 行 う 。 åŋ… čρ ãĒ ut_id を 持 つ įŠē ぎ ãƒŦ ã‚ŗ ãƒŧ ド を čĻ‹ つ け ら れ ãĒ か ãŖ た å ´ 合 、 init (1) は 新 し い ãƒŦ ã‚ŗ ãƒŧ ド を äŊœ る 。 inittab か ら ut_id を 設 厚 し 、 ut_pid お よ ãŗ ut_time を įž 在 値 ãĢ 、 ut_type を INIT_PROCESS ãĢ 設 厚 す る 。

mingetty (8) (ぞ た は agetty (8)) は pid で エ ãƒŗ ト ãƒĒ ãƒŧ を į‰š 厚 し 、 ut_type を LOGIN_PROCESS ãĢ 変 更 し 、 ut_time を 更 新 し 、 ut_line を 設 厚 し た 垌 、 æŽĨ įļš ãŒ įĸē įĢ‹ さ れ る ぎ を åž… つ 。 login (1) は ãƒĻ ãƒŧ ã‚ļ ãƒŧ čĒ č¨ŧ が įĩ‚ äē† ã™ る と 、 ut_type を USER_PROCESS ãĢ 変 更 し 、 ut_time を 更 新 し 、 ut_host と ut_addr を 設 厚 す る 。 mingetty (8) (ぞ た は agetty (8)) と login (1) ãĢ よ り į•° ãĒ る が 、 ut_pid ぎ äģŖ ã‚ り ãĢ ut_line を äŊŋ ãŖ ãĻ ãƒŦ ã‚ŗ ãƒŧ ド ぎ į‰š 厚 が 行 わ れ る こ と も あ る ( ut_pid を äŊŋ う æ–š が 望 ぞ し い ) 。

init (1) は プ ロ ã‚ģ ゚ ぎ įĩ‚ äē† ã‚’ 検 å‡ē し た å ´ 合 、 ut_pid を キ ãƒŧ と し ãĻ utmp ぎ エ ãƒŗ ト ãƒĒ ãƒŧ を į‰š 厚 し 、 ut_type を DEAD_PROCESS ãĢ 設 厚 し 、 ut_user , ut_host , ut_time を ヌ ãƒĢ バ イ ト で ク ãƒĒ ã‚ĸ す る 。

xterm (1) ã‚ŗ マ ãƒŗ ド や äģ– ãŽ į̝ æœĢ エ ミ ãƒĨ ãƒŦ ãƒŧ ã‚ŋ は į›´ æŽĨ USER_PROCESS ぎ ãƒŦ ã‚ŗ ãƒŧ ド を äŊœ り 、 į̝ æœĢ 名 ぎ ã‚ĩ フ ã‚Ŗ ッ ク ゚ 文 字 列 ( /dev/[pt]ty ãĢ įļš ã 文 字 列 ) を äŊŋ ãŖ ãĻ ut_id ぎ 値 を į”Ÿ 成 す る 。 こ ぎ id を 持 つ エ ãƒŗ ト ãƒĒ ãƒŧ が DEAD_PROCESS で あ ãŖ た å ´ 合 ãĢ は 再 刊 ᔍ し 、 そ れ äģĨ 外 ぎ å ´ 合 ãĢ は 新 し い エ ãƒŗ ト ãƒĒ ãƒŧ が äŊœ ら れ る 。 可 čƒŊ ãĒ å ´ 合 ãĢ は プ ロ ã‚ģ ゚ įĩ‚ äē† æ™‚ ãĢ DEAD_PROCESS と 設 厚 し 、 さ ら ãĢ ut_line , ut_time , ut_user , ut_host を ヌ ãƒĢ バ イ ト で ク ãƒĒ ã‚ĸ す る こ と が åĨ¨ åŠą さ れ ãĻ い る 。

telnetd (8) は LOGIN_PROCESS を 設 厚 す る だ け で よ く 、 掋 り ぎ å‡Ļ ᐆ は 通 常 通 り login (1) ãĢ äģģ せ れ ば よ い 。 telnet ぎ ã‚ģ ッ ã‚ˇ ョ ãƒŗ が įĩ‚ äē† ã— た 垌 、 前 čŋ° ぎ よ う ãĢ telnetd (8) が utmp ぎ エ ãƒŗ ト ãƒĒ ãƒŧ を 初 期 化 す る 。

wtmp フ ã‚Ą イ ãƒĢ ãĢ は 、 す ず ãĻ ぎ ロ グ イ ãƒŗ と ロ グ ã‚ĸ ã‚Ļ ト が 記 錞 さ れ る 。 そ ぎ フ り ãƒŧ マ ッ ト は 、 ロ グ ã‚ĸ ã‚Ļ ト 済 ぎ į̝ æœĢ で ãƒĻ ãƒŧ ã‚ļ ãƒŧ 名 が ヌ ãƒĢ と ãĒ る こ と äģĨ 外 は utmp と ぞ ãŖ た く 同 じ で あ る 。 ãƒĻ ãƒŧ ã‚ļ ãƒŧ 名 が shutdown も し く は reboot ぎ į̝ æœĢ 名 ~ は 、 ã‚ˇ ゚ テ ム ぎ 停 æ­ĸ (shutdown) ぞ た は 再 čĩˇ 動 (reboot) を 意 呺 す る 。 ぞ た そ ぎ į̝ æœĢ 名 が | と } ぎ 寞 は date (1) ã‚ŗ マ ãƒŗ ド で 変 更 し た 新 īŧ 旧 ぎ ã‚ˇ ゚ テ ム 時 åˆģ を 記 錞 し ãĻ い る 。 wtmp フ ã‚Ą イ ãƒĢ は login (1), init (1) や い く つ か ぎ バ ãƒŧ ジ ョ ãƒŗ ぎ getty (8) ( mingetty (8) ぞ た は agetty (8)) ãĢ よ り įŽĄ ᐆ さ れ ãĻ い る 。 こ れ ら ぎ プ ロ グ ナ ム は お れ も フ ã‚Ą イ ãƒĢ を 新 た ãĢ äŊœ 成 し ãĒ い ぎ で 、 フ ã‚Ą イ ãƒĢ を 削 除 す る こ と で 情 å ą ぎ 記 錞 (record-keeping) を æ­ĸ め る こ と が で き る 。

フ ã‚Ą イ ãƒĢ

/var/run/utmp
/var/log/wtmp

æē– 拠

POSIX.1 で は 、 utmp 構 造 äŊ“ で は ãĒ く 、 utmpx 構 造 äŊ“ を čĻ 厚 し ãĻ い る 。 utmpx 構 造 äŊ“ で čĻ 厚 さ れ ãĻ い る ぎ は 、 フ ã‚Ŗ ãƒŧ ãƒĢ ド ut_type , ut_pid , ut_line , ut_id , ut_user , ut_tv で あ る 。 POSIX.1 で は 、 フ ã‚Ŗ ãƒŧ ãƒĢ ド ut_line と ut_user ぎ 長 さ は čĻ 厚 さ れ ãĻ い ãĒ い 。

Linux で は 、 utmpx 構 造 äŊ“ ぎ 厚 įžŠ は utmp 構 造 äŊ“ と 同 じ で あ る 。

過 åŽģ ぎ ã‚ˇ ゚ テ ム と ぎ 比 čŧƒ

Linux で ぎ utmp ぎ エ ãƒŗ ト ãƒĒ ãƒŧ は v7/BSD や System V ぎ い ず れ ãĢ も æē– 拠 し ãĻ お ら ず 、 そ ぎ 严 æ–š が æˇˇ 在 し た も ぎ で あ る 。

v7/BSD で は よ り 少 し ぎ 項 į›Ž し か ãĒ い ; も ãŖ と も 重 čρ ãĒ こ と は 、 ut_type が į„Ą い こ と で あ る 。 そ ぎ た め v7/BSD įŗģ ぎ プ ロ グ ナ ム で は (た と え ば ) æ­ģ ん だ įŠļ 態 ぎ エ ãƒŗ ト ãƒĒ ãƒŧ や ロ グ イ ãƒŗ įŠļ 態 ぎ エ ãƒŗ ト ãƒĒ ãƒŧ ぞ で 襨 į¤ē さ れ ãĻ し ぞ う こ と ãĢ ãĒ ãŖ た 。 さ ら ãĢ ã‚ģ ッ ã‚ˇ ョ ãƒŗ ᔍ ぎ ゚ ロ ッ ト を 剞 り åŊ“ ãĻ る た め ぎ 設 厚 フ ã‚Ą イ ãƒĢ が ãĒ い 。 BSD ãĢ 設 厚 フ ã‚Ą イ ãƒĢ が あ る ぎ は ut_id が ãĒ い か ら で あ る 。

Linux (System V įŗģ )で は 、 設 厚 フ ã‚Ą イ ãƒĢ を åŋ… čρ と せ ず ã‚ģ ッ ã‚ˇ ョ ãƒŗ ᔍ ぎ ゚ ロ ッ ト を 剞 り åŊ“ ãĻ る ぎ で 、 一 æ—Ļ 設 厚 さ れ ãĻ し ぞ う と ãƒŦ ã‚ŗ ãƒŧ ド ぎ ut_id は æąē し ãĻ 変 更 さ れ ãĒ い 。 ut_id を ク ãƒĒ ã‚ĸ す る と įĢļ 合 įŠļ 態 ãĢ お ãĄ い り 、 utmp ぎ エ ãƒŗ ト ãƒĒ ãƒŧ を 媊 し た り 、 æŊœ 在 įš„ ãĒ ã‚ģ キ ãƒĨ ãƒĒ テ ã‚Ŗ ホ ãƒŧ ãƒĢ ãĢ ãĒ る 可 čƒŊ 性 が あ る 。 上 čŋ° ぎ フ ã‚Ŗ ãƒŧ ãƒĢ ド を ヌ ãƒĢ バ イ ト で 埋 め ãĻ ク ãƒĒ ã‚ĸ し ãĻ お く ぎ は 、 System V で ぎ 取 り æąē め で は åŋ… čρ と は さ れ ãĻ い ãĒ い が 、 BSD で ぎ 取 り æąē め を 前 提 と し ãĻ い ãĻ 、 か つ utmp を 更 新 し ãĒ い 多 く ぎ プ ロ グ ナ ム が 動 äŊœ す る よ う ãĢ す る た め で あ る 。 Linux で は こ こ ぞ で 記 čŋ° し ãĻ き た よ う ãĢ 、 行 内 厚 ぎ 襨 į¤ē は BSD ぎ æ…Ŗ 例 ãĢ åž“ ãŖ ãĻ い る 。

UT_UNKNOWN は Linux で äŊœ ら れ た も ぎ ぎ よ う で あ る 。 System V ãĢ は ut_host も ut_addr_v6 も 存 在 し ãĒ い 。

æŗ¨ 意

フ ã‚Ą イ ãƒĢ を 削 除 す る こ と で utmp へ ぎ 記 錞 を æ­ĸ め ら れ る äģ– ãŽ 様 々 ãĒ ã‚ˇ ゚ テ ム と は 違 い 、 Linux で は utmp フ ã‚Ą イ ãƒĢ を åŋ… ず お い ãĻ お く åŋ… čρ が あ る 。 who (1) ã‚ŗ マ ãƒŗ ド が 抟 čƒŊ し ãĒ い よ う ãĢ し た い å ´ 合 ãĢ は 、 utmp フ ã‚Ą イ ãƒĢ ぎ 全 ãƒĻ ãƒŧ ã‚ļ ãƒŧ ãĢ 寞 す る čĒ­ ãŋ 取 り 訹 可 を 設 厚 し ãĒ い よ う ãĢ す る 。

フ ã‚Ą イ ãƒĢ ぎ フ り ãƒŧ マ ッ ト は マ ã‚ˇ ãƒŗ ãĢ 䞝 存 す る ぎ で 、 フ ã‚Ą イ ãƒĢ が äŊœ ら れ た マ ã‚ˇ ãƒŗ も し く は 同 一 ã‚ĸ ãƒŧ キ テ ク チ ãƒŖ ãƒŧ ぎ マ ã‚ˇ ãƒŗ 上 で ぎ ãŋ å‡Ļ ᐆ す る こ と を 推 åĨ¨ す る 。

æŗ¨ 意 す ず き į‚š と し ãĻ は 、 biarch ãĒ プ ナ ッ ト フ り ãƒŧ ム 、 つ ぞ り 32ビ ッ ト と 64ビ ッ ト ぎ 严 æ–š ぎ ã‚ĸ プ ãƒĒ ã‚ą ãƒŧ ã‚ˇ ョ ãƒŗ を 原 行 で き る ã‚ˇ ゚ テ ム (x86-64, ppc64, s390x ãĒ お ) で は 、 ut_tv ぎ ã‚ĩ イ ã‚ē は 32ビ ッ ト ãƒĸ ãƒŧ ド と 64ビ ッ ト ãƒĸ ãƒŧ ド で 同 じ で あ る 。 ut_session と ut_time も 、 存 在 す る å ´ 合 ãĢ は 同 様 ãĢ 同 じ ã‚ĩ イ ã‚ē で あ る 。 こ れ ãĢ よ り 、 32ビ ッ ト ã‚ĸ プ ãƒĒ ã‚ą ãƒŧ ã‚ˇ ョ ãƒŗ と 64ビ ッ ト ã‚ĸ プ ãƒĒ ã‚ą ãƒŧ ã‚ˇ ョ ãƒŗ ぎ 間 で デ ãƒŧ ã‚ŋ フ ã‚Ą イ ãƒĢ と å…ą 有 ãƒĄ ãƒĸ ãƒĒ ãƒŧ を å…ą 有 す る こ と が 可 čƒŊ ãĢ ãĒ る 。 そ ぎ た め ãĢ は 、 ut_session を int32_t 型 ãĢ 、 ut_tv を 2つ ぎ int32_t 型 ぎ フ ã‚Ŗ ãƒŧ ãƒĢ ド tv_sec , tv_usec を 持 つ 構 造 äŊ“ ãĢ 変 更 す れ ば よ い ut_tv は struct timeval と 同 じ ã‚ĩ イ ã‚ē と は 限 ら ãĒ い ぎ で 、

gettimeofday((struct timeval *) &ut.ut_tv, NULL);

ぎ よ う ãĒ å‘ŧ ãŗ å‡ē し を す る ぎ で は ãĒ く 、 äģĨ 下 ぎ よ う ãĢ 各 フ ã‚Ŗ ãƒŧ ãƒĢ ド を 設 厚 す る æ–š æŗ• が 推 åĨ¨ さ れ る :

struct utmp ut;
struct timeval tv;

gettimeofday(&tv, NULL);
ut.ut_tv.tv_sec = tv.tv_sec;
ut.ut_tv.tv_usec = tv.tv_usec;

é–ĸ 逪 項 į›Ž

ac (1), date (1), init (1), last (1), login (1), logname (1), lslogins (1), users (1), utmpdump (1), who (1), getutent (3), getutmp (3), login (3), logout (3), logwtmp (3), updwtmp (3)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。