파일이 변경되는 것을 실시간으로 감지하고 싶은데요..

ljs0766의 이미지

파일의 내용이 바뀐다던지 권한이 바뀐다던지 하는 내용을

실시간으로 감지하고 싶은데 대충 어떤식으로 해야 할까요?

무한 루프 돌면서 계속 검사하는건 너무 비효율적이라

평상시엔 sleep상태로 있다가 파일이 변경되는 순간에만 깨어나게

하고 싶은데 -_-;;; 불가능 한가요?

whitekid의 이미지

이런걸 원한건지..

tail -f /var/log/message

What do you want to eat?

chunsj의 이미지

FAM을 써보시는 것은 어떨지?

ljs0766 wrote:
파일의 내용이 바뀐다던지 권한이 바뀐다던지 하는 내용을

실시간으로 감지하고 싶은데 대충 어떤식으로 해야 할까요?

무한 루프 돌면서 계속 검사하는건 너무 비효율적이라

평상시엔 sleep상태로 있다가 파일이 변경되는 순간에만 깨어나게

하고 싶은데 -_-;;; 불가능 한가요?

byteme의 이미지

linux kernel source의 Documentation/dnotify.txt 를 보시면 아마 비슷한걸 발견하실것 같은데요. 한번도 테스트해본적은 없습니다. ^^

불량청년의 이미지

watch -n 1 'ls -al'

1초마다 감시합니다. 다른 명령들도 잘 먹습니다.

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

moonzoo의 이미지

파일 자체만 가지고는 알수 없습니다..

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에서 직접 받아 오는 방법을 사용하시는게 좋을듯 싶습니다.

즐거운 하루 되세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.