GNU/Linux >> Belajar Linux >  >> Linux

Apa perbedaan antara unlink dan rm?

Solusi 1:

Keduanya merupakan pembungkus dari fungsi fundamental yang sama yaitu unlink() panggilan sistem.

Untuk menimbang perbedaan antara utilitas userland.

rm(1) :

  • Opsi lainnya.
  • Masukan lainnya.
  • Pemeriksaan kewarasan.
  • Agak lebih lambat untuk satu panggilan sebagai akibat dari hal di atas.
  • Dapat dipanggil dengan beberapa argumen sekaligus.

unlink(1) :

  • Kurangnya pemeriksaan kewarasan.
  • Tidak dapat menghapus direktori.
  • Tidak dapat mengulang.
  • Hanya dapat menerima satu argumen dalam 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 murni ke sistem unlink(2) fungsi, yang sekarang saya sadari mungkin bukan yang Anda perhitungkan.

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

Edit:

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

Solusi 2:

Pada tingkat spesifikasi POSIX, apa yang rm lakukan ditentukan jauh lebih ketat daripada apa yang dilakukan unlink.

Portabilitas hasilnya tampaknya akan lebih baik menggunakan rm, jika skrip Anda harus berjalan di seluruh OS.

Solusi 3:

Bagian lambat dari penghapusan adalah kode sistem file dan barang-barang disk, bukan persiapan ruang pengguna dari panggilan sistem unlink().

Yaitu:jika perbedaan kecepatan penting, maka Anda tidak boleh menyimpan data di sistem file.

unlink hanyalah rm "ringan". rm memiliki lebih banyak fitur tetapi mereka melakukan hal yang sama.


Linux
  1. Apa perbedaan antara insmod dan modprobe

  2. Apa perbedaan antara strtok_r dan strtok_s di C?

  3. Apa perbedaan antara fsck dan e2fsck?

  1. Apa perbedaan antara InnoDB dan MyISAM?

  2. Apa perbedaan antara adduser dan useradd?

  3. Apa perbedaan antara $(CC) dan $CC?

  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Apa Perbedaan Antara Git Switch dan Checkout?

  3. Apa perbedaan antara Redhat dan centOS?