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
두 파일의 결합이 표시됩니다. 삭제된 파일 열기 프로세스그리고그들의 이름은 "mongod"로 시작됩니다.
"생성 시간"(Linux에서는 "생성 시간"이라고 함)과 관련하여 Linux에서는 소수의 파일 시스템에서만 이를 지원합니다. 대부분의 파일 시스템은 이를 전혀 지원하지 않습니다. stat <some file>
"생년월일" 필드를 실행하고 확인하여 파일 시스템이 생년월일을 지원하는지 확인할 수 있습니다 .
예를 들어:
$ stat /etc/motd |grep Birth
Birth: -
내 예에서는 출생 시간이 지원되지 않는 것을 볼 수 있습니다.
그러나 파일 시스템이 Bith 시간을 지원하지 않는 경우에도 유용할 수 있는 파일에 대한 다른 타임스탬프를 얻을 수 있습니다.
먼저, 명령 출력에서 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에 삭제되었습니다.
답변2
Linux 에서는 zsh
다음을 수행할 수 있습니다.
ls -lrtL /proc/*/fd/*(-l0)
fd 프로세스에서 열려 있었지만 삭제된 파일의 mtime(잉크 값 l
) 을 확인하세요 0
.
경로에 다음이 포함된 경우 mongo
:
ls -lrtL /proc/*/fd/*(-l0e['[[ $REPLY:P = *mongo* ]]'])
상대적으로 새로운 버전의 GNU를 사용하면 마지막 수정 시간 대신 출생 시간을 보고서에 ls
추가하고 정렬할 수 있습니다 . 더 정확한 시간은 --time=birth
또한 참조하세요 .--full-time