分类: 系统运维
2012-03-29 12:36:26
由多数UNIX系统提供的两个数据文件是utmp文件,它跟踪所有当前登录的用户,和wtmp文件,它记录所有的登入与登出。在版本7,一个记录类型被这两个文件写,一个与下面结构体一致的二进制记录:
struct utmp {
char ut_line[8]; /* tty line: "tyh0", "ttyd0", "ttyp0", ... */
char ut_name[8]; /* login name */
long ut_time; /* seconds since Epoch */
};
当登录时,一个这样的结构体被填充,并由login程序写入到utmp文件里,而同样的结构体被添加到wtmp文件里。在登出时,utmp文件的项被删除
--用空字节填充--由init进程,而一个新的项被添加到wtmp文件里。这个在wtmp文件的登出项的ut_name域被清零。一些特殊的项被添加到
wtmp文件来指明系统何时重启,和系统时间和日期改变前后的时间。who程序读取utmp文件并以可读格式打印它的内容。UNIX系统的更新版本提供了
last命令,来从wtmp文件里读取并打开选择的项。
UNIX系统的多数版本仍提供tmp和wtmp文件,但正如预期的,这些文件的信息量已经增长了。版本7的20字节的结构体在SVR2增长到了36字节,而SVR4的扩展的utmp结构体超过了350字节!
这些记录在Solaris的细节格式在utmpx手册页里给出。在Solaris 9,两个文件都在/var/adm目录下。Solaris在getutx里提供了许多函数来读取这两个文件。
在FreeBSD 5.2.1、Linux 2.4.22、Mac OS X 10.3上,utmp手册页给了这些登入记录的它们版本的格式。这两个文件的路径名为/var/run/utmp和/var/log/wtmp。