UTMP 5
目录
UTMP
NAME[åç§°]SYNOPSIS[æ»è§]
DESCRIPTION[æè¿°]
FILES[ç¸å³æä»¶]
CONFORMING TO[éµå¾ª]
RESTRICTIONS[éå¶]
BUGS[缺æ¾]
SEE ALSO[å¦è§]
[䏿çç»´æ¤äºº]
[ä¸æçææ°æ´æ°]
ãä¸å½linux论åmanæå页翻è¯è®¡åã:
è·
NAME[åç§°]
utmp, wtmp - ç» å½ è®° å½ï¼login recordsï¼
SYNOPSIS[æ»è§]
#include
DESCRIPTION[æè¿°]
utmp æ ä»¶ ç¨ äº è®° å½ å½ å ç³» ç» ç¨ æ· æ¯ åª äº äººã ä½ æ¯ å® é ç 人 æ° å¯ è½ æ¯ è¿ ä¸ª æ° ç® è¦ å¤ ï¼ å 为 å¹¶ é æ æ ç¨ æ· é½ ç¨ utmp ç» å½ã
è¦å: utmp å¿ é¡» ç½® 为 ä¸ å¯ å ï¼ å 为 å¾ å¤ ç³» ç» ç¨ åº ï¼ æ ç¹ å» ç é£ ç§ ï¼ ä¾ èµ äº å®ã å¦ æ ä½ å° å® ç½® 为 å¯ å ï¼ å¶ ä» ç¨ æ· å¯ è½ ä¼ ä¿® æ¹ å® ï¼//* 导 è´ ç¨ åº è¿ è¡ åº é ï¼ ã ï¼//* ï¼//* ï¼ä¸ 为 è¯ è æ³¨ï¼
æ ä»¶ ä¸ æ¯ ä¸ äº æ¡ ç® ç å 表 ï¼ æ¡ ç® ç ç» æ ï¼ å¨ utmp.h ä¸ è¿ è¡ äº å£° æ ï¼ è§ ä¸ ( 注 æ è¿ é åª å åº äº ä¸ é¨ å ï¼ ç» è ä¾ libc ç ç æ¬ æ æ ä¸ å ï¼ï¼
#define
UT_UNKNOWN 0
#define RUN_LVL 1
#define BOOT_TIME 2
#define NEW_TIME 3
#define OLD_TIME 4
#define INIT_PROCESS 5
#define LOGIN_PROCESS 6
#define USER_PROCESS 7
#define DEAD_PROCESS 8
#define ACCOUNTING 9
#define
UT_LINESIZE 12
#define UT_NAMESIZE 32
#define UT_HOSTSIZE 256
struct
exit_status {
short int e_termination; /* process termination status. */
short int e_exit; /* process exit status. */
};
struct utmp {
short ut_type; /* type of login */
pid_t ut_pid; /* pid of login process */
char ut_line[UT_LINESIZE]; /* device name of tty -
"/dev/" */
char ut_id[4]; /* init id or abbrev. ttyname */
char ut_user[UT_NAMESIZE]; /* user name */
char ut_host[UT_HOSTSIZE]; /* hostname for remote login */
struct exit_status ut_exit; /* The exit status of a process
marked as DEAD_PROCESS. */
long ut_session; /* session ID, used for windowing*/
struct timeval ut_tv; /* time entry was made. */
int32_t ut_addr_v6[4]; /* IP address of remote host. */
char pad[20]; /* Reserved for future use. */
};
/* Backwards
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(8) æ§è¡ inittab(5)è产çãç¶èï¼å¨äº§çæ¡ç®ä»¥åï¼ init(8) åå° utmp æ¸ç©ºï¼éè¿è®¾å® ut_type 为 DEAD_PROCESSæ¥å®ç°. å½ut_type 䏿¯ DEAD_PROCESS æ RUN_LVL å¹¶ä¸ä¸åå¨è¿ç¨å·ä¸º ut_pid çè¿ç¨æ¶,éè¿ç¨ç©ºä¸²æ¸ç©º ut_user, ut_host å ut_time æ¥å®ç°ã妿ä¸åå¨ ut_id ç空记å½, initï¼åå§åæ¶ï¼ ä¼å建ä¸ä¸ªãå®å°ä¼ä¾æ® inittab æ¥è®¾ç½® ut_id , 设置 ut_pid å ut_time 为å½åå¼ï¼è®¾ç½® ut_type å° INIT_PROCESS.
getty(8) 便®è¿ç¨å·å®ä½æ¡ç®, å° ut_type æ¹ä¸º LOGIN_PROCESS, æ¹å ut_time, è®¾å® ut_line ï¼ç¶åçå¾è¿æ¥å»ºç«ã login(8), å¨é´å«å®ç¨æ·å, å° ut_type æ¹ä¸º USER_PROCESS, æ¹å ut_time å¹¶è®¾å® ut_host å ut_addr. æ ¹æ® getty(8) å login(8)宿çåè½, å¯ä»¥ç¨ ut_line æ¥å®ä½è®°å½ï¼è½ç¶ç¨ ut_pid å¯è½æ´å¥½äºã
å½ init(8) åç°æè¿ç¨å卿¶, å®éè¿ ut_pid æ¥å®ä½å®ç utmp æ¡ç®, è®¾å® ut_type 为 DEAD_PROCESS ï¼ç¶åç¨é¶åèæ¸ç©º ut_user, ut_host å ut_time ã
xterm(1) åå¶ä»ç»ç«¯ä»¿çå¨ç´æ¥å建 USER_PROCESS è®°å½å¹¶éè¿ä½¿ç¨ /dev/ttyp%c çæåä¸¤ä¸ªåæ¯æç¨ p%d ï¼/dev/pts/%dï¼æ¥äº§ç ut_id ã 妿å®ä»¬æ¾å°è¿ä¸ª id ç DEAD_PROCESS , å®ä»¬å°±ä½¿ç¨å®ï¼å¦åå°±å建ä¸ä¸ªæ°çæ¡ç®. 妿å¯è½ï¼å®ä»¬å°å®æ 记为 DEAD_PROCESS å¹¶å° ut_line, ut_time, ut_user å ut_host 置为 nullã
xdm(8) ä¸ä¼å建 utmp è®°å½, å 为没æç»ç«¯ä¸å®ç¸è¿. è¯å¾ç¨å®äº§ç utmp è®°å½ä¼å¼èµ·å¦ä¸é误ï¼finger: can not stat /dev/machine.dom. å®åºè¯¥ç¨äºå建 wtmp æ¡ç®, å ftpd(8) ç¸ä¼¼.
telnetd(8) è®¾å® LOGIN_PROCESS æ¡ç®å¹¶æå¶ä»çççç» login(8) å»åãtelnet ä»»å¡ç»æå, telnetd(8) cleans up utmp in the described way.ï¼ï¼ï¼ï¼
wtmp æä»¶è®°å½äºææçç»å½åéåºãå®çæ ¼å¼ä¸ utmp å ä¹å®å¨ä¸æ ·ï¼ä¾å¤æ¯ï¼ç¨ç©ºç¨æ·åæ¥è¡¨ç¤ºå¨ç¸å³ç»ç«¯ä¸çéåºï¼ã餿- ¤ä»¥å¤ï¼ ç¨ç»ç«¯å "˜" åç¨æ·å "shutdown" æ "reboot" 表示系ç»å³æºæéå¯ï¼ the pair of terminal names "|"/"}" logs the old/new system time when date(1) changes it. wtmp ç± login(1), å init(1) 以åæäºçæ¬ç getty(1) 使ç¨. 使¯è¿äºç¨åºå¹¶ä¸å建å®,æä»¥å¦æå°å®å é¤çè¯æ¨å°±å¾ä¸å°è®°å½äºã
FILES[ç¸å³æä»¶]
/var/run/utmp
/var/log/wtmp
CONFORMING TO[éµå¾ª]
Linux utmp æ¢ä¸éµå¾ª v7/BSD ä¹ä¸éµå¾ª SYSV: å®å®éæ¯ä¸¤èçæ··å. v7/BSD ä¸åæ¯è¾å°; æéè¦çæ¯å®æ²¡æ ut_type (ut_type å¯ä»¥ä½¿æ¬å°ç v7/BSD-ç±»çç¨åºæ¾ç¤º(以次为ä¾) dead æ login æ¡ç®.èä¸,没æä¸ºä»»å¡åéééçæä»¶. BSD åç¸å(BSD does so), å 为å®ç¼ºå°çæ¯ ut_id å. å¨ Linux ä¸(SYSV ä¸ä¹ä¸æ ·), è®°å½ç ut_id å䏿¦è®¾å®å°±ä¸åæ¹å,å®ä¿çééèä¸éè¦ä»ä¹éç½®æä»¶. æ¸é¤ ut_id å¯è½ä¼å¼èµ· race conditions ä»è导è´å®å¨æ¼æ´. å°± SYSV çè¦æ±æ¥è®²,ç¨ç©ºå- èå¡«åçæ¹å¼æ¥æ¸ç©ºä¸é¢æå°çå个å䏿¯å¿é¡»ç,使¯è¿æ ·å使å¾è¿è¡éç¨ BSD è¯- æ³èå䏿¹å utmp çç¨åºæä¸ºå¯è½. æ£å¦ä¸é¢æåç,Linux å¨å¥åä¸ä½¿ç¨ BSD çæ¯ä¾.
SYSV å¨å¥åä¸ä»ä½¿ç¨ç±»åå廿 è¯å®ä»¬ææ¯ç»å½ä¿¡æ¯(ä¾å¦:. "new time"). UT_UNKNOWN åªå¨ Linux 䏿. SYSV 没æ ut_host å ut_addr_v6 å.
ä¸è±¡å¶å®åç§ç³»ç», æ¨å¯ä»¥éè¿å 餿件æ¥ç¦æ¢ utmp , å¨ Linux ä¸ utmp å¿é¡»ä¸ç´åå¨. å¦æä½ è¦ç¦æ¢ who(1) å½ä»¤,æ¨éè¦ä½¿æ´ä¸ª utmp ä¸å¯è¯».
éè¦æ³¨æçæ¯å¨ libc5 å libc6 ä¸ utmp çç»ææ¯ä¸åç.å æ¤ä½¿ç¨æ§ç»æçç¨åºä¼ç ´å /var/run/utmp å/or /var/log/wtmp. Debian ç³»ç»åå«ä¸ä¸ªä¿®è¡¥è¿ç libc5 å®å¯ä»¥ä½¿ç¨æ°çæ ¼å¼. ä½å¯¹ wtmp, é®é¢ä¾ç¶åå¨å 为å®ç´æ¥å¯¹ libc5 è¿è¡åå.
RESTRICTIONS[éå¶]
æä»¶æ ¼å¼ä¾æºå¨èä¸å, å æ¤æ¨èçåæ³æ¯:å¨å建å®çæºå¨ä¸ä½¿ç¨å®.
BUGS[缺æ¾]
æ¬æå页åºäº libc5 , ç°å¨å¯è½æåµå·²æä¸åäº.
SEE ALSO[å¦è§]
ac(1), date(1), getutent(3), init(8), last(1), login(1), updwtmp(3), who(1)
[䏿çç»´æ¤äºº]
Redcandle <redcandle51@chinaren.com>
[ä¸æçææ°æ´æ°]
2001.11.08
ãä¸å½linux论åmanæå页翻è¯è®¡åã:
http://cmpp.linuxforum.net
è·
æ¬é¡µé¢ä¸æçç±ä¸æ
man
æå页计åæä¾ã
䏿 man
æå页计åï¼https://github.com/man-pages-zh/manpages-zh