it-swarm-vi.tech

Sự khác biệt giữa unlink và rm là gì?

Là hủy liên kết nhanh hơn rm?

64
Marcin

Cả hai đều là một trình bao bọc cho cùng một chức năng cơ bản là một lệnh gọi hệ thống unlink().

Để cân nhắc sự khác biệt giữa các tiện ích người dùng.

rm(1):

  • Lựa chọn khác.
  • Thêm thông tin phản hồi.
  • Kiểm tra vệ sinh.
  • Chậm hơn một chút cho các cuộc gọi đơn là kết quả của các cuộc gọi trên.
  • Có thể được gọi với nhiều đối số cùng một lúc.

unlink(1):

  • Kiểm tra độ tỉnh táo ít hơn.
  • Không thể xóa thư mục.
  • Không thể tái diễn.
  • Chỉ có thể lấy một đối số tại một thời điểm.
  • Nghiêng nhẹ hơn cho các cuộc gọi duy nhất do tính đơn giản của nó.
  • Chậm hơn khi so sánh với việc đưa ra rm(1) nhiều đối số.

Bạn có thể chứng minh sự khác biệt với:

$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'

$ touch $(seq 1 100)
$ time rm $(seq 1 100)

real    0m0.048s
user    0m0.004s
sys     0m0.008s

$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done

real    0m0.207s
user    0m0.044s
sys     0m0.112s

$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done

real    0m0.167s
user    0m0.048s
sys     0m0.120s

Tuy nhiên, nếu chúng ta đang nói về một cuộc gọi không bị thay đổi đối với hàm unlink(2), mà bây giờ tôi nhận ra có lẽ không phải là điều bạn đang tính toán.

Bạn có thể thực hiện một hệ thống unlink() trên các thư mục và tệp giống nhau. Nhưng nếu thư mục là cha mẹ của các thư mục và tệp khác, thì liên kết đến phụ huynh đó sẽ bị xóa, nhưng con cái sẽ bị treo lủng lẳng. Đó là ít hơn lý tưởng.

Chỉnh sửa :

Xin lỗi, làm rõ sự khác biệt giữa unlink(1)unlink(2). Ngữ nghĩa vẫn sẽ khác nhau giữa các nền tảng.

69
Dan Carley

Ở cấp độ thông số POSIX, những gì rm không được chỉ định chặt chẽ hơn nhiều so với những gì hủy liên kết .

Tính di động của kết quả có vẻ tốt hơn khi sử dụng rm, nếu tập lệnh của bạn phải chạy trên hệ điều hành.

8
Mike G.

Phần chậm của việc xóa là mã hệ thống tệp và nội dung đĩa, không phải là chuẩn bị không gian người dùng của lệnh gọi hệ thống unlink ().

Tức là: nếu chênh lệch tốc độ có vấn đề, thì bạn không nên lưu trữ dữ liệu trên hệ thống tệp.

hủy liên kết chỉ là một "ánh sáng" rm. rm có nhiều tính năng hơn nhưng chúng làm điều tương tự.

4
Thomas