pengembangan-web-mp.com

Apa perbedaan antara membatalkan tautan dan rm?

Apakah memutuskan tautan lebih cepat dari rm?

64
Marcin

Keduanya adalah pembungkus untuk fungsi dasar yang sama yaitu unlink() system call.

Untuk menimbang perbedaan antara penggunaan userland.

rm(1):

  • Lebih banyak pilihan.
  • Lebih banyak umpan balik.
  • Pemeriksaan kewarasan.
  • Sedikit lebih lambat untuk satu panggilan sebagai akibat dari hal di atas.
  • Dapat dipanggil dengan beberapa argumen sekaligus.

unlink(1):

  • Pengecekan kewarasan kurang.
  • Tidak dapat menghapus direktori.
  • Tidak dapat berulang.
  • Hanya dapat mengambil satu argumen pada satu waktu.
  • Sedikit lebih ramping untuk satu panggilan karena kesederhanaannya.
  • Lebih lambat jika dibandingkan dengan memberikan rm(1) beberapa argumen.

Anda dapat menunjukkan perbedaannya dengan:

$ 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

Namun jika kita berbicara tentang panggilan yang tidak tercemar ke fungsi unlink(2) fungsi, yang sekarang saya sadari mungkin bukan apa yang Anda perhitungkan.

Anda dapat melakukan sistem unlink() pada direktori dan file yang sama. Tetapi jika direktori tersebut adalah induk dari direktori dan file lain, maka tautan ke induk tersebut akan dihapus, tetapi anak-anak akan dibiarkan menggantung. Yang kurang ideal.

Edit:

Maaf, jelaskan perbedaan antara unlink(1) dan unlink(2). Semantik masih akan berbeda antar platform.

69
Dan Carley

Pada tingkat spesifikasi POSIX, apa rm tidak ditentukan lebih ketat dari apa tidak tautan tidak.

Portabilitas hasil tampaknya lebih baik menggunakan rm, jika skrip Anda harus berjalan di OS.

8
Mike G.

Bagian lambat dari penghapusan adalah kode sistem file dan hal-hal disk, bukan persiapan userspace dari pemutusan sistem ().

I.e .: jika perbedaan kecepatan itu penting, maka Anda seharusnya tidak menyimpan data pada sistem file.

batalkan tautan hanya "cahaya" rm. rm memiliki lebih banyak fitur tetapi mereka melakukan hal yang sama.

4
Thomas