파일 경로가 주어지면 어떤 프로세스가 해당 파일을 생성했는지(및/또는 읽기/쓰기) 확인하려면 어떻게 해야 합니까?
답변1
이것라소프(여러 답변에서 이미 언급된) 명령은 실행 시 어떤 프로세스에 파일이 열려 있는지 알려줍니다. lsof
거의 모든 UNIX 변형에서 작동합니다.
lsof /path/to/file
lsof
2마이크로초 전에 열리고 1마이크로초 전에 닫힌 파일에 대해서는 알려주지 않습니다. 특정 파일을 모니터링하고 해당 파일에 액세스할 때 반응해야 하는 경우 다른 도구가 필요합니다.
미리 계획할 수 있다면 파일을로깅 파일 시스템파일 시스템. LoggedFS는퓨즈계층 구조의 파일에 대한 모든 액세스를 기록하는 스택 파일 시스템입니다. 로깅 매개변수는 고도로 구성 가능합니다. 퓨즈를 사용할 수 있습니다.모든 주요 대학. 파일이 생성된 디렉터리에 대한 액세스를 기록해야 합니다. 제공된 샘플 구성 파일로 시작하여 따르십시오.이 가이드.
loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file
많은 대학에서는 기타 모니터링 시설도 제공합니다. Linux에서는 비교적 새로운 기능을 사용할 수 있습니다. 감사 하위 시스템. 이에 대한 문헌은 많지 않습니다(그러나 Loggedfs에 관한 것 이상).이 튜토리얼또는ㅏ 희귀한 예아니면 그냥auditctl
매뉴얼 페이지. 여기에서는 데몬이 시작되었는지 확인한 후 다음을 실행하면 충분합니다 auditctl
.
auditctl -w /path/to/file
(이전 시스템에서는 이것이 필요하다고 생각합니다 auditctl -a exit,always -w /path/to/file
.) 로그를 살펴보세요 /var/log/audit/audit.log
.
답변2
글쎄, 반복해서 실행할 수 lsof
있으며 운이 좋다면 범인은 파일이 나타날 수 있을 만큼 오랫동안 파일을 열어 둘 것입니다. 즉. :
$ lsof -r1 /path/to/file
또는 많은 파일의 경우
$ lsof -r1 /path/to/folder/*
이는 특정 시점에 지정된 경로에 대한 모든 액세스를 초당 한 번씩 나열합니다. 여기에는 파일에 액세스하는 프로세스의 PID 나열이 포함됩니다.
이것이 작동하지 않는 경우, 즉 파일이 매우 빠르게 열리고 닫히는 경우가 자주 발생하므로 더 정교한 도구를 찾아야 한다고 생각합니다. 아마도로깅 파일 시스템뭐가 될수 있었는지?
핵랜드
1초에 한 번씩 lsof
작동하지 않으면 while 루프를 해킹하여 가능한 한 빨리 lsof를 반복적으로 실행할 수 있습니다. 좋다:
$ while true; do lsof /paht/to/file; done;
예쁘지는 않지만 아마도 그게 그랬을 수도 있습니다.
답변3
당신은 그것을 사용할 수 있습니다lsof
그 이유는 다음과 같습니다.
$ lsof /tmp/file
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
less 4737 wena 4r REG 8,6 90700 1643536 /tmp/file
less
이름이 지정된 프로세스가 파일을 저장하고 있다고 나와요 "/tmp/파일" 열려 있는.
노트geany
:이상한 점은 or 를 사용하면 작동하지 않는다는 것입니다 nano
. 더 좋은 조언 기대하겠습니다.
답변4
ls
크롬에서 사용하는 파일을 사용 하고 grep
찾을 수 있습니다
$ ls -l /proc/*/fd | grep "chrome"
lrwx------ 1 ba abc 64 Jul 16 22:19 104 -> /home/abc/.config/google-chrome/Default/Cookies
lr-x------ 1 abc abc 64 Jul 16 22:19 113 -> /opt/google/chrome/nacl_irt_x86_64.nexe
lrwx------ 1 abc abc 64 Jul 16 22:19 121 -> /home/abc/.cache/google-chrome/Default/Cache/data_0
lrwx------ 1 abc abc 64 Jul 16 22:19 122 -> /home/abc/.cache/google-chrome/Default/Cache/data_1
lrwx------ 1 abc abc 64 Jul 16 22:19 123 -> /home/abc/.cache/google-chrome/Default/Cache/data_2
lr-x------ 1 abc abc 64 Jul 16 22:19 125 -> /home/abc/.config/google-chrome/Dictionaries/en-US-3-0.bdic
또 다른 방법은 다음을 사용하는 것입니다 lsof
.grep
$ lsof | grep "chrome"
chrome 2204 abc cwd DIR 8,5 4096 1441794 /home/abc
chrome 2204 abc rtd DIR 8,5 4096 2 /
chrome 2204 abc txt REG 8,5 87345336 5111885 /opt/google/chrome/chrome
chrome 2204 abc mem REG 8,5 4202496 1443927 /home/abc/.cache/google-chrome/Default/Media Cache/data_3
chrome 2204 abc mem REG 8,5 1056768 1443926 /home/abc/.cache/google-chrome/Default/Media Cache/data_2
chrome 2204 abc mem REG 8,5 270336 1443925 /home/abc/.cache/google-chrome/Default/Media Cache/data_1
chrome 2204 abc mem REG 8,5 45056 1443924 /home/abc/.cache/google-chrome/Default/Media Cache/data_0