Monitor Directory for Changes

后端 未结 4 1554
说谎
说谎 2020-11-28 08:07

Much like a similar SO question, I am trying to monitor a directory on a Linux box for the addition of new files and would like to immediately process these new files when t

相关标签:
4条回答
  • 2020-11-28 08:37

    fschange (Linux File System Change Notification) is a perfect solution, but it needs to patch your kernel

    0 讨论(0)
  • 2020-11-28 08:44

    One solution I thought of is to create a "file listener" coupled with a cron job. I'm not crazy about this but I think it could work.

    0 讨论(0)
  • 2020-11-28 08:48

    Look at inotify.

    With inotify you can watch a directory for file creation.

    0 讨论(0)
  • 2020-11-28 09:03

    First make sure inotify-tools in installed.

    Then use them like this:

    logOfChanges="/tmp/changes.log.csv" # Set your file name here.
    
    # Lock and load
    inotifywait -mrcq $DIR > "$logOfChanges" &
    IN_PID=$$
    
    # Do your stuff here
    ...
    
    # Kill and analyze
    kill $IN_PID
    while read entry; do
       # Split your CSV, but beware that file names may contain spaces too.
       # Just look up how to parse CSV with bash. :)
       path=... 
       event=...
       ...  # Other stuff like time stamps?
       # Depending on the event…
       case "$event" in
         SOME_EVENT) myHandlingCode path ;;
         ...
         *) myDefaultHandlingCode path ;;
    done < "$logOfChanges"
    

    Alternatively, using --format instead of -c on inotifywait would be an idea.

    Just man inotifywait and man inotifywatch for more infos.

    You can also use incron and use it to call a handling script.

    0 讨论(0)
提交回复
热议问题