Nid yw maint y cyfeiriaduron yn werth ein hymdrech

Mae hwn yn swydd gwbl ddiwerth, diangen o ran cymhwysiad ymarferol, ond post bach doniol am gyfeiriaduron mewn systemau *nix. Mae'n ddydd Gwener.

Yn ystod cyfweliadau, mae cwestiynau diflas yn aml yn codi am inodau, ffeiliau popeth, na all llawer o bobl eu hateb yn gall. Ond os ydych chi'n cloddio ychydig yn ddyfnach, gallwch ddod o hyd i bethau diddorol.

I ddeall y post, ychydig o bwyntiau:

  • mae popeth yn ffeil. cyfeiriadur hefyd yn ffeil
  • mae'r inode yn storio metadata o'r ffeil, ond nid yw enw'r ffeil yn cael ei storio yno
  • mae enw'r ffeil yn cael ei storio yn y data cyfeiriadur
  • Mae maint y cyfeiriadur, yr un un a ddangosir yn ls ac sy'n 4Kb yn ddiofyn, yn dibynnu ar nifer y ffeiliau yn y cyfeiriadur a hyd eu henwau
  • Yn amlwg, po fwyaf o ffeiliau, y mwyaf yw maint y cyfeiriadur

Nawr dyma'r rhan ddiddorol: rydyn ni'n creu cyfeiriadur gyda miliwn o ffeiliau, yn gwirio maint y cyfeiriadur, ac yna'n dileu'r holl ffeiliau ac yn edrych ar faint y cyfeiriadur.

$ mkdir niceDir && cd niceDir
# Π² зависимости ΠΎΡ‚ скорости носитСля, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ 2-10 ΠΌΠΈΠ½ΡƒΡ‚
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug  2 13:37 .

Fel y gwelwch, nid yw maint y cyfeiriadur wedi newid, er y byddai'n ymddangos :)

Dim ond trwy ddefnyddio fsck (a'r opsiwn -D) y gallwch drwsio maint cyfeiriadur (heb ei ddileu) mewn cyflwr heb ei osod.

Ond pan es i i chwilio am pam fod hyn felly, mae'n troi allan bod 10 mlynedd yn Γ΄l ymddygiad o'r fath eisoes trafod yn lkml. Ac yn Γ΄l y datblygwyr, nid yw'r atgyweiriad yn werth yr ymdrech.

Ffynhonnell: hab.com

Ychwanegu sylw