RHEL 8でいくつかのGhostファイルが見つかりました(そのファイルはOSでは削除されましたが、MongoDBでは削除されませんでした)。 Ghostファイルがいつ作成されるかを確認したいと思います。次のコマンドを使用してGhostファイルの作成日時を確認する方法を学びます。
lsof | grep deleted | grep mongod | wc -l
ベストアンサー1
まず、コマンドを実行する別のより良い方法は次のとおりです。
lsof +L 1 -a -c mongod
+L 1
リンク数が1より小さいすべてのファイルが表示され(削除されたファイルのリンク数は0になります)、-c mongod
名前が「mongod」で始まるプロセスが表示され、-a
2つのファイルの組み合わせが表示されます。削除されたファイルを開くプロセスそして彼らの名前は「mongod」で始まります。
「生成時間」(Linuxでは「生成時間」と呼ばれる)に関して、Linuxでは少数のファイルシステムでのみこれをサポートします。ほとんどのファイルシステムはこれをまったくサポートしていません。stat <some file>
「生年月日」フィールドを実行して確認して、ファイルシステムが生年月日をサポートしていることを確認できます。
たとえば、
$ stat /etc/motd |grep Birth
Birth: -
私の例では、出生時間がサポートされていないことがわかります。
ただし、ファイルシステムがビスタイムをサポートしていない場合でも、役に立つ可能性があるファイルの別のタイムスタンプを取得できます。
まず、コマンド出力からlsof
プロセスのpidと削除されたファイルのファイル記述子を取得する必要があります。
$ lsof +L 1 -a -c tail
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
tail 44305 root 3r REG 8,10 6 0 4193 /tmp/testfile (deleted)
この場合、pidは44305、ファイル記述子(下FD
)フィールドは次のとおりです。サム。stat
次のコマンドを実行して、削除されたファイルを実行できます。stat -L /proc/<pid>/fd/<fd number>
この-L
フラグは、ファイル記述子へのリンクを逆参照するために使用されます。つまり、リンク自体ではなくファイル記述子(単純なシンボリックリンク)がリンクされたファイルでstatを実行します。私:
$ stat -L /proc/44305/fd/3
File: '/proc/44305/fd/3'
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 80ah/2058d Inode: 4193 Links: 0
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-10-27 16:14:24.519483990 +0300
Modify: 2022-10-27 16:12:06.676463711 +0300
Change: 2022-10-27 16:15:55.425475599 +0300
Birth: -
Access
ファイルに最後にアクセスした時間を表示します(この場合は16:14:24)。Modify
ファイルの内容が最後に変更された時刻を表示します。この場合は16:12:06です。Change
通常、最後の*を表示します。メタデータファイルの内容(所有者、ユーザー、権限など)が変更されたがファイルが削除された場合、ファイルが削除された時間が表示されます。だから私の場合、ファイルは16:15:55に削除されました。