Tôi vừa gặp một lỗi khó hiểu:
rm: cannot remove `xxx/app/cache/prod': Directory not empty
Điều này được gây ra bởi lệnh sau:
rm -rf $cache_dir/*
nơi $cache_dirđược định nghĩa làxxx/app/cache
Vì vậy, tôi thấy nó giống như: rmxóa tất cả mọi thứ trong cache/prodthư mục, sau đó ngay trước khi nó cố xóa cache/prodthư mục - một chương trình khác đã tạo một tệp / một thư mục bên trong nó do đó nó gây ra rmlỗi.
Là giả định của tôi đúng?
rm -rfan toàn luồng: nếu bạn chạy đồng thời nhiều lần trên cùng một thư mục, thư mục sẽ bị xóa. Đây là về việc rm -rkhông phải là nguyên tử.
rmlời gọi, chúng ta có thể nói về an toàn của luồng. Nhưng dù sao, nó cũng không thay đổi bất cứ điều gì
rm -rkhông phải là nguyên tử. Nếu bạn muốn chắc chắn rằng không có thêm tệp nào được tạo trong thư mục trong khirm -rfđang chạy, bạn có thể đổi tên nó trước, sau đó xóa thư mục đã đổi tên.