Warning: utmp ´Â ¾²±â°¡ °¡´ÉÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù. ¿Ö³ÄÇÏ¸é ¸¹Àº ÇÁ·Î±×·¥ µéÀÌ (¾î¸®¼®°Ôµµ) ÀÌ°ÍÀÇ ¿ÏÀüÇϸ®¶ó »ý°¢Çϱ⠶§¹®ÀÌ´Ù. utmp ¸¦ ¾²±â°¡´É »óÅ·ΠµÎ¸é, °¡Â¥ ½Ã½ºÅÛ ·Î±×ÆÄÀÏÀÌ »ý±æ ¼öµµ ÀÖ°í, ½Ã½ºÅÛ ÆÄÀÏÀÌ º¯°æ µÉ ¼öµµ ÀÖ´Ù.
ÀÌ ÆÄÀÏÀº ¾È¿¡ Æ÷ÇÔµÈ ÆÄÀÏ¿¡ ¼±¾ðµÈ ±¸Á¶¿¡ µû¸¥ ¿£Æ®¸®ÀÇ ½ÃÄö½ºÀÌ´Ù. (ÀÌ°ÍÀº ¿©·¯ Á¤ÀÇ Áß ÇϳªÀÓÀ» ¸í½ÉÇÏÀÚ; ÀÚ¼¼ÇÑ °ÍÀº libcÀÇ ¹öÀü¿¡ µû¶ó ´Ù¸£´Ù.):
#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]
ù¹ø° ¿£Æ®¸®´Â Ç×»ó inittab(5)¸¦ ½ÇÇàÇÏ´Â init(8)·Î ÀÎÇÑ °á°ú¸¦ »ý¼ºÇÑ´Ù. ¿£Æ®¸®°¡ ½ÇÇàµÇ±â Àü¿¡, init(8)´Â ut_type¸¦ DEAD_PROCESS·Î ¼³Á¤ÇÏ°í, ut_type´Â DEAD_PROCESS³ª RUN_LVL°¡ ¾Æ´Ï°í, PID ut_pid·Î ½ÇÇàÇÏ´Â °ÍÀÌ ¾ø´Â °¢°¢ÀÇ ±â·ÏÀ» À§ÇØ,ut_user, ut_host, ut_timeÀ» null ¹ÙÀÌÆ®·Î Áö¿òÀ¸·Î½á utmp¸¦ Áö¿î´Ù. ÇÊ¿äÇÑ ut_id ¿¡ ºó ±â·ÏÀ» ãÀ» ¼ö ¾ø´Ù¸é, init´Â »õ·Î¿î °ÍÀ» ¸¸µç´Ù. ÀÌ°ÍÀº inittab, ut_pid, ut_time·ÎºÎÅÍ ut_idÀ» ÇöÁ¦ °ªÀ¸·Î, ut_typeÀ» INIT_PROCESS·Î ¼³Á¤ÇÑ´Ù.
getty(8)´Â pid·Î ¿£Æ®¸®¸¦ ã°í, 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_pid ´ë½Å, ut_lineÀ¸·Î ¹ß°ßµÈ´Ù.
init(8)´Â ÇÁ·Î¼¼½º°¡ Á¾·áµÈ °ÍÀ» ¹ß°ßÇϸé, utmp Ç׸ñÀ» ut_pid ¿·¿¡
À§Ä¡½ÃÅ°°í, ut_type¸¦ READ_PROCESSÀ¸·Î ¼³Á¤Çϸç, ut_user,
ut_host ±×¸®°í ut_time¸¦ null ¹ÙÀÌÆ®·Î ¼Ò°ÅÇÑ´Ù.
xterm(1)¿Í ´Ù¸¥ Å͹̳Π¿¡¹Ä·¹ÀÌÅÍ´Â USER_PROCESS ±â·ÏÀ» ¸¸µé°í,
/dev/ttyp%cÀÇ ¸¶Áö¸· µÎ¹®ÀÚ¸¦ »ç¿ëÇϰųª, /dev/pts/%d¿¡
´ëÇÑ p%d¸¦ »ç¿ëÇÔÀ¸·Î¼, ut_id¸¦ »ý¼º½ÃŲ´Ù. ¸¸ÀÏ À̵éÀÌ ÀÌ ID¿¡ ´ëÇÑ
DEAD_PROCESS¸¦ ¹ß°ßÇÑ´Ù¸é, ±×µéÀº À̸¦ Àç»ç¿ëÇÒ °ÍÀÌ°í, ±×·¸Áö ¾ÊÀ¸¸é, »õ·Î¿î ¿£Æ®¸®¸¦
¸¸µç´Ù. ¸¸ÀÏ ¹ß°ßÇÒ ¼ö ÀÖ´Ù¸é, ±× ¾ÆÀ̵𸦠DEAD_PROCESS·Î¼ Ç¥±âÇÏ°í, À̵éÀº ¶ÇÇÑ
ut_line, ut_time, ut_user ±×¸®°í ut_host·Î null ó¸®ÇÑ´Ù.
ÇÒ´çµÈ Å͹̳ÎÀÌ ¾øÀ¸¸é, xdm(8)´Â utmp ±â·ÏÀ» ¸¸µé¾î¼´Â ¾ÈµÈ´Ù. À̸¦ Çϳª ¸¸µéµµ·Ï Çã¿ëÇÏ´Â °ÍÀº ´ÙÀ½°ú °°Àº ¹®Á¦µéÀÇ ¿øÀÎÀÌ µÈ´Ù. ÇΰÅ(finger), /dev/machine.domÀ» ½ÃÀÛÇÒ ¼ö ¾ø´Ù. ±×·¯³ª, ftpd(8)°¡ ÇÏ´Â °Íó·³ wtmp ¿£Æ®¸®¸¦ ¸¸µé¾î¾ß ÇÑ´Ù.
telnetd(8)Àº LOGIN_PROCESS ¿£Æ®¸®¸¦ ¼³Á¤ÇÏ°í, login(8) ³ª¸ÓÁö ºÎºÐÀº
º¸Åë°ú °°ÀÌ ³²°ÜµÐ´Ù. ÅÚ³Ý ¼¼¼ÇÀÌ ³¡³ÈÄ, telnetd(8)´Â utmp´Â ¼³¸íÇÑ ¹æ½ÄÀ¸·Î ¼Ò°ÅÇÑ´Ù.
wtmp ÆÄÀÏÀº ¸ðµç ·Î±×Àΰú ·Î±×¾Æ¿ôÀ» ±â·ÏÇÑ´Ù. ÀÌ ÆÄÀÏÀÇ Æ÷¸ËÀº ³Î »ç¿ëÀÚ À̸§ÀÌ
°ü·ÃµÈ Å͹̳ο¡¼ ·Î±×¾Æ¿ôÀ» °¡¸®Å°´Â °ÍÀ» Á¦¿ÜÇÏ°í´Â °ÅÀÇ utmp°ú ºñ½ÁÇÏ´Ù. ´õ¿íÀÌ,
»ç¿ëÀÚ À̸§ "shutdown" ȤÀº "reboot"À» Áö´Ñ Å͹̳ΠÀ̸§ "~"Àº ½Ã½ºÅÛ
¼Ë´Ù¿î ȤÀº ¸®ºÎÆ®¸¦ °¡¸®Å°°í, Å͹̳ΠÀ̸§½Ö "|"/"}"Àº date(1)ÀÌ À̸¦
º¯°æ½Ãų ¶§, ¿À·¡µÈ/»õ·Î¿î ½Ã½ºÅÛÀ» ·Î±×·Î ±â·ÏÇÑ´Ù. wtmpÀº login(1),
init(1), WfIgetty(1)ÀÇ ÀϺΠ¹öÀü¿¡ ÀÇÇØ À¯ÁöµÈ´Ù. ÀÌ·¯ÇÑ ÇÁ·Î±×·¥µéÁß Çϳªµµ ÆÄÀÏÀ»
¸¸µéÁö ¸øÇϹǷÎ, ¸¸ÀÏ »èÁ¦µÇ¸é, ±â·Ï À¯Áö´Â µÇÁö ¾Ê´Â´Ù.
SYSV´Â À̵éÀ» Ç¥½ÃÇϱâ À§ÇØ ¿ÀÁ÷ À¯Çü Çʵ带 »ç¿ëÇÏ°í, Çà Çʵ峻¿¡ "new time"¿Í °°Àº Á¤º¸¼º ¸Þ½ÃÁöµéÀ» ±â·ÏÇÑ´Ù. UT_UNKNOWN´Â ¸®´ª½º¿¡¼¸¸ º¼ ¼ö ÀÖ´Â °Í °°´Ù.
ÀÌ ÆÄÀÏÀ»»èÁ¦ÇÔÀ¸·Î¼ utmp ·Î±ëÀÌ º¸ÀÌ´Â ´Ù¾çÇÑ ´Ù¸¥ ½Ã½ºÅÛµé°ú´Â ´Þ¸®, utmp´Â ¸®´ª½º »ó¿¡¼ Ç×»ó Á¸ÀçÇÑ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ who(1)ÀÇ ±â´ÉÀ» Á¤Áö½ÃÅ°¸é, utmp ¿µ¿ªÀÌ ÀÐÇôÁöÁö ¾Êµµ·Ï ÇØ¾ß ÇÑ´Ù.
libc5¿¡¼ utmp ±¸Á¶Ã¼´Â libc6³»¿¡¼ º¯°æµÇ¾ú´Ù´Â °ÍÀ» ÂüÁ¶Ç϶ó. ÀÌ ¶§¹®¿¡, ÀÌÀüÀÇ libc5 ±¸Á¶Ã¼¸¦ »ç¿ëÇÏ´Â ¹ÙÀ̳ʸ®µéÀº .IR /var/run/utmp °ú /var/log/wtmp¸¦ ºØ±«½ÃŲ´Ù. µ¥ºñ¾È ½Ã½ºÅÛµéÀº »õ·Î¿î utmp Æ÷¸ËÀ» »ç¿ëÇÏ´Â ÆÐÄ¡µÈ libc5¸¦ Æ÷ÇÔÇÑ´Ù. libc5¿¡¼ Á÷Á¢ ¾×¼¼½ºµÇ±â ¶§¹®¿¡, utmp¿¡ ÀÖ¾î ¹®Á¦´Â ¿©ÀüÈ÷ Á¸ÀçÇÑ´Ù.