Giả sử tôi có thiết bị đầu cuối mở và thông qua thiết bị đầu cuối đó, tôi có cd
'được chỉnh sửa đối với một số thư mục. Thông qua một thiết bị đầu cuối khác, tôi xóa thư mục đó và khôi phục lại nó từ một bản sao lưu giống hệt nhau. Khi tôi cố gắng vim
một tệp từ thiết bị đầu cuối đầu tiên, trong cùng một thư mục, tại sao tôi gặp lỗi về một tệp xử lý cũ? Nó có nghĩa là gì? (Trên một mặt lưu ý, tôi thấy rằng có thể bỏ qua vấn đề này thông qua cd $(pwd)
.)'Xử lý tệp cũ' trong Linux có nghĩa là gì?
Trả lời
Khi thư mục bị xóa, inode cho thư mục đó (và inodes cho nội dung của nó) được tái chế. Con trỏ mà shell của bạn có inode của thư mục đó (và các inode của nội dung) bây giờ không còn hợp lệ nữa. Khi thư mục được khôi phục từ bản sao lưu, các inode cũ là không (nhất thiết) được sử dụng lại; thư mục và nội dung của nó được lưu trữ trên các inode ngẫu nhiên. Điều duy nhất vẫn giữ nguyên là thư mục parent reuses cùng tên cho thư mục được khôi phục (vì bạn đã nói với nó).
Bây giờ nếu bạn cố gắng truy cập nội dung của thư mục mà vỏ gốc của bạn vẫn trỏ đến, nó sẽ truyền yêu cầu đó tới hệ thống tệp như yêu cầu cho inode gốc, đã được tái chế (và thậm chí có thể đang sử dụng cho một thứ hoàn toàn khác). Vì vậy, bạn nhận được thông báo stale file handle
vì bạn đã yêu cầu một số dữ liệu không tồn tại.
Khi bạn thực hiện thao tác cd
, vỏ sẽ xác định lại vị trí inode của bất kỳ đích nào bạn cung cấp cho nó. Bây giờ vỏ của bạn biết inode mới cho thư mục (và các inode mới cho nội dung của nó), các yêu cầu trong tương lai cho nội dung của nó sẽ hợp lệ.
Ah, vì vậy đây chỉ là cách xử lý các con trỏ inode không hợp lệ/null? –
Có. Tôi không biết đủ về các chi tiết để biết điều gì sẽ xảy ra nếu, ví dụ, bạn đã thử tham chiếu một inode đã được tái chế để chỉ vào một thứ khác. Bạn vẫn sẽ có được một tập tin cũ xử lý? Hoặc bạn sẽ nhận được dữ liệu không mong muốn? – dg99
Tôi không nghĩ rằng hệ thống sẽ sử dụng lại nó vì ai đó thực sự đang sử dụng I-node đó bằng cách sử dụng nó làm thư mục hiện tại. –
- 1. 'Khung hình cũ nhất' có nghĩa là gì trong ipdb?
- 2. mục đích của macro tiền xử lý được xác định trong tệp linux/compiler.h là gì?
- 3. Định nghĩa về "mã cũ" là gì?
- 4. __init có nghĩa là gì trong mã hạt nhân Linux?
- 5. gì này có nghĩa là trong Linux sed '$ a \' a.txt
- 6. Trình xử lý là gì
- 7. "&" ở cuối lệnh linux có nghĩa là gì?
- 8. Cách xử lý các tệp mới (chưa được xử lý) trong linux
- 9. "$ 1/*" có nghĩa là gì trong "cho tệp trong $ 1/*"
- 10. "\\. \", "\ ?? \", "\\? \", "\\" có nghĩa là gì?
- 11. MEDIA_ERROR_SERVER_DIED có nghĩa là gì?
- 12. 32 so với 64 bit ... hoặc, chính xác 'thông tin xử lý' có nghĩa là gì
- 13. Document.all có nghĩa là gì?
- 14. LPCWSTR có nghĩa là gì và xử lý như thế nào?
- 15. Dòng tiền xử lý trước C/C++ này có nghĩa là gì?
- 16. Ý nghĩa của "EXPORT_SYMBOL" trong mã nhân Linux là gì?
- 17. Trong C nghĩa là gì [foo] = bar nghĩa là gì?
- 18. '::' có nghĩa là gì?
- 19. Toàn cầu :: có nghĩa là gì trong tệp .Net designer?
- 20. 'Phụ huynh' có nghĩa là gì trong tệp styles.xml?
- 21. \ x00 có nghĩa là gì trong tệp nhị phân?
- 22. "& _" có nghĩa là gì trong VB?
- 23. Mở tệp trong bộ nhớ nghĩa là gì?
- 24. Xử lý song song trong linux
- 25. Trình quản lý gói có nghĩa là gì?
- 26. MiB có nghĩa là gì trong PHPMyAdmin?
- 27. Điều gì! */Có nghĩa là trong .gitignore
- 28. /([^.]*)\.(.*)/ có nghĩa là gì?
- 29. {} có nghĩa là gì?
- 30. = * có nghĩa là gì?
73.000 lượt xem, 29 phiếu bầu, nhưng câu hỏi này đã bị đóng. Đề ra? Rõ ràng là không. Tôi đã gặp vấn đề này với tư cách là một nhà phát triển phần mềm, không phải là một siêu người dùng. –
@TobiasGassmann Tôi nghĩ bởi vì nó không phải là một câu hỏi về bản thân lập trình. Giống như nếu ai đó hỏi một câu hỏi về lý do tại sao đăng nhập Unix từ xa của họ đôi khi ngắt kết nối sau một thời gian không hoạt động (trong khi họ đang phát triển phần mềm), đó cũng sẽ là chủ đề cho [SO]. – dg99
@TobiasGassmann Được thăng hạng, nhưng sự thật được bảo rằng tôi không thể quan tâm ít hơn. Trong khi bạn có thể gặp lỗi này trong nhiều trường hợp (mã hóa hay không), lý do của tôi ở đây chỉ là để thỏa mãn sự tò mò của tôi về một kịch bản nơi làm việc định kỳ. Tôi rất vui nếu nó đã được sử dụng cho bạn, nhưng tôi sẽ không làm phiền mở lại này. –