如何仅针对Linux系统清除最后-10信息?我尝试执行命令> /var/log/wtmp
来清除最后的信息,但它清除了整个登录信息,但我只需要清除最后的-10登录信息。
答案1
wtmp 文件是一个struct utmp
记录序列。要删除最后 10 条记录,首先要发现 utmp 记录的大小,然后将 wtmp 文件截断为其当前大小减去 utmp 记录大小的十倍。
一个简单的 C 程序将为您提供 utmp 记录的大小。
#include <utmp.h>
#include <stdio.h>
struct utmp foo;
main()
{
printf("%lu\n", sizeof foo);
return 0;
}
Perl 脚本将截断 wtmp 文件
$utmp_size = utmp_record_size_goes_here;
$wtmp_file = "wtmp filename goes here";
open WTMP, "+<", $wtmp_file or die "$wtmp_file: ", $!;
seek WTMP, -10 * $utmp_size, 2;
truncate WTMP, tell(WTMP);
close WTMP;