最後の-10情報を消去する方法は?

最後の-10情報を消去する方法は?

Linuxシステムでのみ最後の-10情報を消去する方法は?最後の情報を消去するコマンドを実行しましたが、> /var/log/wtmpログイン情報全体を消去します。最後の-10ログイン情報のみを消去する必要があります。

答え1

wtmp ファイルはstruct utmp一連のレコードです。最後の 10 個のレコードを削除するには、まず utmp レコードのサイズを確認してから、wtmp ファイルを現在のサイズから utmp レコードのサイズの 10 倍を引いたサイズに切り捨てます。

単純な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;

関連情報