Giống như similar SO question, tôi đang cố gắng theo dõi một thư mục trên hộp Linux để bổ sung các tệp mới và muốn xử lý ngay các tệp mới này khi chúng đến. Bất kỳ ý tưởng về cách tốt nhất để thực hiện điều này?Giám sát danh bạ cho các thay đổi
Trả lời
Nhìn vào inotify.
Với thông tin chi tiết, bạn có thể xem thư mục để tạo tệp.
Một giải pháp mà tôi nghĩ là tạo một trình nghe "tệp" cùng với một công việc định kỳ. Tôi không điên về điều này nhưng tôi nghĩ nó có thể hoạt động.
Nếu bạn muốn xử lý chúng càng sớm càng tốt, không có cách nào xung quanh sự không đồng nhất. –
fschange (Linux File System Change Notification) là một giải pháp hoàn hảo, nhưng nó cần phải patch kernel
Lưu ý cảnh báo ở đầu bài viết, '' 'fschange là một thay thế cho inotify rằng [đã] được thực hiện trước khi inotify trở thành một phần của hạt nhân Linux chính. '' ' – TechplexEngineer
Đầu tiên chắc chắn inotify-tools
trong cài đặt.
Sau đó sử dụng chúng như thế này:
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"
Ngoài ra, sử dụng --format
thay vì -c
trên inotifywait
sẽ là một ý tưởng.
Chỉ man inotifywait
và man inotifywatch
để biết thêm thông tin.
Bạn cũng có thể sử dụng incron
và sử dụng nó để gọi tập lệnh xử lý.
Cảm ơn, câu trả lời tốt nhất cho đến nay. Tôi đã chắc chắn có một cái gì đó tiện lợi với inotify và điều này là chính xác it.Works giống như một say mê. – akostadinov
- 1. tệp giám sát cơ sở giám sát python cho các thay đổi
- 2. giám sát thay đổi tập tin c + + linux
- 3. Giám sát ZooKeeper với Giám sát
- 4. Giám sát
- 5. Làm cách nào để giám sát DOM cho các thay đổi?
- 6. Giám sát sửa đổi thư mục
- 7. kịch bản lệnh linux giám sát các thay đổi tệp trong các thư mục (như autospec!)
- 8. giám sát với chọn
- 9. Giám sát celerybeat với người giám sát và virtualenv
- 10. Giám sát ứng dụng virtualenv django qua người giám sát
- 11. Giám sát hiệu suất cho ASP.NET MVC2?
- 12. Giám sát IIS 6.0
- 13. Giám sát USB OSX
- 14. Tại sao Giám sát viên không nhận ra các thay đổi mã?
- 15. giám sát thư mục
- 16. Giám sát các ứng dụng .NET ASP.NET
- 17. Danh bạ sửa đổi lần cuối ngày
- 18. Giám sát nhiệt độ CPU
- 19. Instrumentation.ActivityMonitor không giám sát Intent.ACTION_CALL
- 20. Giám sát lưu lượng mạng
- 21. Giám sát đường âm thanh
- 22. Làm thế nào để giám sát hiệu quả một thư mục để thay đổi trên linux?
- 23. FireBug và giám sát các yêu cầu miền chéo JSONP
- 24. Nhận vị trí của UIView đối với người giám sát của người giám sát
- 25. Cách giám sát khi vị trí màn hình của Kiểm soát thay đổi?
- 26. Giám sát các đường ống có tên trong C#
- 27. Quan sát các thay đổi NSMutableDictionary
- 28. Làm thế nào để giám sát kho lưu trữ git để thay đổi?
- 29. API LinkedIn cho Danh bạ Công ty
- 30. Giám sát các cuộc gọi ứng dụng tới DDN
Inotify không hỗ trợ đệ quy xem các thư mục, nghĩa là phải có đồng hồ inotify riêng biệt cho mỗi thư mục con. Giữ nó trong tâm trí. – Jason
Ngoài ra, hãy xem gói có tên [incron] (http://inotify.aiken.cz/?section=incron&page=why) và [man page] của nó (http://linux.die.net/man/5/incrontab). Tôi không chắc nó xử lý các thư mục con như thế nào. – BeowulfNode42
Không, incron không xử lý các thư mục con, nó hoàn toàn thất bại trên một chiến dịch "indiegogo" thích hợp, và incron ngủ gật trong năm 2012. Buồn, nhưng nó đã đến một con hẻm mù. Tôi thực sự hy vọng, inotify sẽ ở lại ;-) – Frunsi