4

システムへのログイン回数を把握しようとしています (基本的にはシステムの起動)。

lastUnixコマンドを利用しています。ただし、特定の数を超えるエントリをプルすることはできません。/var/log/wtmpプル元のログ ファイルは、一定のサイズになると上書きされると想定しています。

wtmp.1ファイルもあることがわかり-fました。パラメータを使用すると、このパラメータを使用してログをさらに 1 か月さかのぼることができます。さらに遡ったログがどこかにアーカイブされているかどうか疑問に思っています。

だから、私の質問は次のとおりです。古いエントリを取得する方法はありますか。

以下はlast私が行っている呼び出しです:

last -n 10000|grep "system"

ここに出力の最後の数行があります

reboot   system boot  3.5.0-36-generic Sun Jul  7 07:07 - 22:08  (15:01)    
reboot   system boot  3.5.0-36-generic Sat Jul  6 23:23 - 23:23  (00:00)    
reboot   system boot  3.5.0-34-generic Sat Jul  6 09:40 - 23:22  (13:42)    
reboot   system boot  3.5.0-34-generic Sat Jul  6 09:38 - 09:39  (00:00)    
reboot   system boot  3.5.0-34-generic Sat Jul  6 06:40 - 09:39  (02:58)    
reboot   system boot  3.5.0-34-generic Sat Jul  6 06:15 - 06:17  (00:02)    
reboot   system boot  3.5.0-34-generic Sat Jul  6 06:13 - 06:17  (00:03)    
reboot   system boot  3.5.0-34-generic Fri Jul  5 19:30 - 22:34  (03:03) 

過去のログを取得できません。

  1. これは正しいアプローチですか?
  2. 古いログを確認するにはどうすればよいですか? たとえば、-n 10000または-n 1000000を渡すと、同じ出力が得られます。

最終的には、サブプロセス モジュールからこの o/p を解析する簡単な Python スクリプトを作成します。

編集:以下の答えのほとんどは正しいです。残念ながら、1つの答えしか受け入れることができませんでした。一度消えたログはなくなりました!

4

4 に答える 4

3

実行している unix/linux の種類はわかりませんが、私の Ubuntu ホストでは、これは最後の起動時間に適しています

for f in /var/log/wtmp*; do last -f $f reboot;done

/var/log ですべての wtmp ファイルを検索し、再起動ユーザーを除外するだけです。

于 2013-07-18T15:39:02.440 に答える
2

lastコマンドはファイルから情報を取得しますwtmp(/var/log/wtmp現在のシステムでは、ディストリビューションによっては、実際のパスが異なる場合があります)。そのファイルは通常、ほとんどのディストリビューションで定期的にローテーションされ、一定数の以前のファイルが保持されます。これを使用してアクセスできるはずですlast -f <filename>(最初に古いファイルを解凍する必要がある場合があります)。

于 2013-07-18T15:20:50.403 に答える
2

最後に、ファイル /var/log/wtmp をさかのぼって検索します。したがって、2) に関しては、wtmp に含まれるエントリのみを一覧表示できます。(パラメーター f を使用して他のファイルを指定します) たとえば、ログ ローテーターを使用してそのファイルをローテーションする場合、既定ではそれらのエントリは表示されません。1) 依存します;-)

ログが存在するログインのみを一覧表示できます (つまり、ローテーション ログがまだ存在します)。

于 2013-07-18T15:20:01.473 に答える
1

猫/proc/稼働時間

これは、システムが稼働している時間を示します。それはあなたが望むものですか?

于 2013-07-18T15:14:24.050 に答える