it-swarm.asia

Unlink ve rm arasındaki fark nedir?

Bağlantıyı kaldırmak rm'den daha hızlı mı?

64
Marcin

Her ikisi de bir unlink() sistem çağrısı olan aynı temel işleve sarıcıdır.

Kullanıcı arazileri arasındaki farkları tartmak.

rm(1):

  • Daha fazla seçenek.
  • Daha fazla geri bildirim.
  • Sağlık kontrolü.
  • Yukarıdakilerin bir sonucu olarak tek aramalar için biraz daha yavaş.
  • Aynı anda birden fazla argümanla çağrılabilir.

unlink(1):

  • Daha az sağlık kontrolü.
  • Dizinler silinemiyor.
  • Dinlenemiyor.
  • Bir kerede yalnızca bir argüman alabilir.
  • Sadeliği nedeniyle tek aramalar için marjinal olarak yalın.
  • rm(1) çoklu argüman verilmesi ile karşılaştırıldığında daha yavaştır.

Farkı şu şekilde gösterebilirsiniz:

$ 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

Ancak, sistem unlink(2) fonksiyonuna katkısız bir çağrıdan bahsediyorsak, şimdi farkettiğinizin muhtemelen sizin hesapladığınız şey olmadığını anlıyorum.

Dizinlerde ve dosyalarda benzer bir unlink() sistemi gerçekleştirebilirsiniz. Ancak dizin diğer dizinlerin ve dosyaların üst öğesi ise, o üst öğenin bağlantısı kaldırılır, ancak çocuklar sarkık kalır. Hangi ideal daha az.

Düzenleme:

Maalesef unlink(1) ve unlink(2) arasındaki farkı açıklığa kavuşturdu. Anlambilim hala platform arasında farklılık gösterecektir.

69
Dan Carley

POSIX özellik düzeyinde, rm öğesinin yaptığı, nlink öğesinden çok daha sıkı belirtilir.

Komut dosyanızın işletim sistemlerinde çalışması gerekiyorsa, sonucun taşınabilirliğinin rm kullanarak daha iyi olduğu görülmektedir.

8
Mike G.

Kaldırmanın yavaş kısmı, unlink () sistem çağrısının kullanıcı alanı hazırlığı değil dosya sistemi kodu ve disk şeyleridir.

Yani: hız farkı önemliyse, verileri dosya sisteminde saklamamanız gerekir.

unlink sadece bir rm "ışığı" dır. rm daha fazla özelliğe sahiptir ancak aynı şeyi yaparlar.

4
Thomas