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ư: rm
xóa tất cả mọi thứ trong cache/prod
thư mục, sau đó ngay trước khi nó cố xóa cache/prod
thư 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 rm
lỗi.
Là giả định của tôi đúng?
rm -rf
an 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 -r
không phải là nguyên tử.
rm
lờ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 -r
khô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.