만약 에플리케이션 레벨에서 만드셔야 한다면 고려해야 될것이 너무도 많아지고 말씀 하신대로 비 효율적일수가 있을겁니다. 예를 들면 파일 사이즈와 날짜 이름 모든것은 동일한데 중간에 한바이트만 바뀌었다고 하는 경우도 생길수가 있거든요. 이럴려면 파일의 다이제스트 코드도 만들어야 되고 이러쿵 저러쿵 복잡해질것 같습니다.
아니면 다른분께서 말씀 하신대로 파일의 변경을 특정한 프로세서를 통해서만 가능하게 한다던지(특정한 에플리케이션에서 사용하는 것이라면 가능하겠져. 예를 들면 업데이트 서버에 파일을 올린다던지 할때) 하는 방법도 있을수 있을것 같습니다. 그렇지 않으면 I-NODE에서 직접 받아 오는 방법을 사용하시는게 좋을듯 싶습니다.
이런걸 원한건지..[code:1]tail -f /var/log/m
이런걸 원한건지..
tail -f /var/log/message
What do you want to eat?
Re: 파일이 변경되는 것을 실시간으로 감지하고 싶은데요..
FAM을 써보시는 것은 어떨지?
...
linux kernel source의 Documentation/dnotify.txt 를 보시면 아마 비슷한걸 발견하실것 같은데요. 한번도 테스트해본적은 없습니다. ^^
이것도 있죠. *^^*
watch -n 1 'ls -al'
1초마다 감시합니다. 다른 명령들도 잘 먹습니다.
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
파일 감지.
파일 자체만 가지고는 알수 없습니다..
poll 이나 select등도 파일에 내용이 있다면 항상 readable 한 상태를
리턴하기 때문에 어렵고요.
tail 등에서 사용하는 것과 같이 sleep하다가 매 1초마다 확인하는 방법이 있고
파일에 변경을 가하는 A 프로세스에서 파일의 변경내역을 감시하는 B프로세스
에게 "내가 파일을 방금 변경했다" 알려주는 방법이 있겠습니다.
알려주는 방법에는 signal을 보내거나.. (비권장..)
pipes, fifo, sockets 등의 select가능한 device에 쓰는 것이 있겠습니다.
예를 들면 A 프로세스가 해당 파일에 데이타를 쓰고, fifo에 1바이트를 쓰면
fifo에 select(또는 poll) 를 걸고 있던 B 프로세스가 이를 감지하고
파일이 변경되었다고 판단하고 파일의 변경된 부분을 읽는 등의 행동을
하는 것입니다.
(A 프로세스는 여러개도 무방..)
..
FAM을 권장해드립니다.
만약 에플리케이션 레벨에서 만드셔야 한다면 고려해야 될것이 너무도 많아지고 말씀 하신대로 비 효율적일수가 있을겁니다. 예를 들면 파일 사이즈와 날짜 이름 모든것은 동일한데 중간에 한바이트만 바뀌었다고 하는 경우도 생길수가 있거든요. 이럴려면 파일의 다이제스트 코드도 만들어야 되고 이러쿵 저러쿵 복잡해질것 같습니다.
아니면 다른분께서 말씀 하신대로 파일의 변경을 특정한 프로세서를 통해서만 가능하게 한다던지(특정한 에플리케이션에서 사용하는 것이라면 가능하겠져. 예를 들면 업데이트 서버에 파일을 올린다던지 할때) 하는 방법도 있을수 있을것 같습니다. 그렇지 않으면 I-NODE에서 직접 받아 오는 방법을 사용하시는게 좋을듯 싶습니다.
즐거운 하루 되세요.
댓글 달기