インストール以降のLinuxシステムの「年齢」を判断する方法


39

特定のファイルのタイムスタンプを簡単に確認できると思いました。それから私はのようなタイムスタンプを見たときそれほど簡単でないことに気付きました1991


私はこれらすべての答えを愛し、一部を支持し、それらから学びました。しかし、質問が明確に定義されていないことがわかりました。たとえば、私の色付きの箱は、FSがダンプされて10年間でマザーボードの2つの化身とHDDの4つの完全な変更を経てきました。毎回復元されます。私のすべてのssh公開鍵の日付は2001年2月19日です。しかし、ルートFSは2010年6月11日20:59:01に作成されました。これは、moboが(ディスクと共に)最後にアップグレードされたときです。さらに他のテストではさらに異なる結果が得られますが、それは私に起こります。Linuxシステムの時代をどのように定義しますか(発見せずに)?
MadHatterはモニカをサポートします

4
どうやらこれはテセウスの船の問題としても知られています。en.wikipedia.org/wiki/Ship_of_Theseusを参照してください。
MadHatterは、モニカをサポートします

マシンを購入してから、HDDには常にパーティションがあります。新しいドライブを購入するとき、または新しいカーネルで新しいルートパーティションを作成するときに、バックアップに必要なものをすべてそこに置きます。私には発生しませんでした:
リサ

回答:


47

最も簡単な方法はおそらく次のとおりです(sda1が/ root /であると仮定):

tune2fs -l / dev / sda1 | 作成されたgrep

これにより、ファイルシステムが作成された日付が表示されます。ext2からext4で動作することを確認しましたが、他のファイルシステムについてはわかりません!


1
PC用の新しいドライブを入手したら、通常はその上にパーティションを作成してからcp -aデータを上書きします。つまり、すべてのケースでシステムの年齢を判断することは不可能です。
ヒューバートカリオ

おそらく、使用/dev/rootはもう少し一般的です。
-camh

以前のシステムの上に新しいシステムをインストールし、sda1 FSを維持したため、以下のMihaiM(sshキー)のソリューションはより正確でした。
リングØ11年

14

私がよく使用するメカニズムの1つは、ルートホームディレクトリ内のファイルの変更時間(ctime)を確認することです。以来/rootホームディレクトリはインストール時に作成され、多くの場合、ほとんど使用されていない、これは比較的良好な近似を提供することができます。Kyleがコメントで明らかにしたように、ctimeはデータではなくinodeを参照するため、ファイルの内容を変更してもctimeは変更されません。

デフォルトでは、lsコマンドはファイルの変更時刻(mtime)を出力します。そのため、ctimeオプションをそのように置き換えた場合、

ls -alct /root

これにより、すべてのファイルが印刷され、作成時間が表示され、時間で並べ替えられます。

例として、/root私のシステムの1つにあるディレクトリ内の3つの最も古いファイルのサンプルを次に示します。

ls -alt install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root 10238 Feb 18  2010 install.log.syslog
-rw-r--r--. 1 root   129 Dec  3  2004 .tcshrc
-rw-r--r--. 1 root   100 Sep 22  2004 .cshrc

そして、変更時間をチェックすることにより

ls -alct install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root   100 Feb 18  2010 .cshrc
-rw-r--r--. 1 root 10238 Feb 18  2010 install.log.syslog
-rw-r--r--. 1 root   129 Feb 18  2010 .tcshrc

2010年2月18日の日付は、私がそのシステムを最初にインストールしたおおよその時間で確実に追跡します。


4
ctimeは実際にはファイルの作成時間ではなく、変更時間です。これは、iノードに変更を加えた最後の時間です。ファイルの許可または所有者を変更すると、これも変わります。可能性は所有者であるか、/ rootフォルダー自体のアクセス許可が変更されていないため、これが並んでいます。シングルUnixの仕様は、単に「最後のステータス変更のtime_tのファイルのst_ctime時間」を持っている- 。(私は、cが実際の略かわからない
カイルブラント

実際、インストーラーログの日付/時刻。あなたのディストリビューション/ OSに応じてそこにあるかもしれないし、ないかもしれません
クースヴァンデンホウト

6

試してみる

ls -alp /etc/ssh/ssh_host_dsa_key.pub | cut -d " " -f6

OSのインストール時にキーが生成されます。


3
これは良いアイデアですが、SSHキーにいくつかの弱点があり、システムの更新を行った場合(そしてシステムの更新を行う必要があります!)、キーは再生成されます。
ジョシュ

素晴らしいアイデア!ただし、キーが十分に新しい場合はlscutコマンドが正しく機能しないため、日付が(少なくとも私のマシンでは)異なって表示されます。私は今使用しますstat -c %y /etc/ssh/ssh_host*pub。また、なぜLinuxでファイル作成時間がこれ以上愛されていないのか疑問に思います
...-Rennex

3

ハードウェアにアクセスできるのであれば、ハードウェアをチェックするのがいいでしょう。システムやハードウェアのコンポーネントを検査して、いつ組み立てられたかを知ることができます。

また、BIOS画面にアクセスできる場合は、多くの場合、マシンの古さを判断するために使用できる日付情報があります。

ハードドライブのSMART情報(smartctl -a /dev/sda)にアクセスできる場合は、何かすることがあります。SMARTに特定のタイムスタンプは表示されませんが、少なくとも1時間の使用カウンタがあります。これは、マシンの古さの下限を提供します(ハードドライブが100時間実行されている場合、システムは100時間未満にならないため)。

ファイルシステムのチェックについては、日付情報を見ることができます/lost+found-そのディレクトリは、ファイルシステムの作成時に作成されました。その日付は、前の回答のtunefs情報と一致する必要があります。


/lost+foundこの情報は非特権ユーザーが利用できるため、ヒントとして+1 。スーパーユーザーとしてrootファイルシステムでtune2fsのようなバッチ操作を実行するのは少し心配です。さらに、このソリューションは、FreeBSDおよび非ext2 / 3/4ファイルシステムで動作します。
ステファンLasiewski 14

3

RedHatと派生物を使用すると、ファイルエージと他のシステムファイルを組み合わせて、OSバージョン/ヴィンテージの一般的なアイデアを簡単に得ることができます。/root/anaconda-ks.cfg最初のサーバーセットアップとパッケージパラメーターが含まれているため、通常はファイルを確認します。時々uname -a、カーネルのビルド日付に関する良い情報があります。に同じ日付のファイルのクラスターもあります/etc。通常、rcx.dリンク、rcスクリプト、inittabなど。


3

これは、Red Hatシステムでも機能します。

rpm -qi basesystem | grep "Install Date"

仮想マシンが共通のイメージからスピンアップされている場合、これ(およびtune2fsのトリック)は仮想マシンではあまりうまく機能しないことに注意してください。ただし、私のLinodeではsshホストキーのチェックは正確です。
cjc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.