
рдПрдХ рднреАрдбрд╝ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдкрд░ рдордВрддреНрд░рдореБрдЧреНрдз рдХрд░ рджреЗрдирд╛ред
рдореИрдВрдиреЗ рд▓реЗрдЦ
рдХреЛ рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдпрд╛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд▓рд╛рдЦреЛрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрдврд╝рд╛ рдФрд░ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖред рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕ рдЯреВрд▓рдХрд┐рдЯ рдореЗрдВ рднреАрдбрд╝ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд░рд▓ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рд╕реАрдзреЗ рдХреЙрд▓
getdents()
рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЕрд╡рдЧрдд рдирд╣реАрдВ рд╣реИрдВ, рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг: рдпрджрд┐ рдЖрдкрдиреЗ рдЧрд▓рддреА рд╕реЗ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рд╣реИрдВ - рдЕрд░реНрдерд╛рддред рдПрдХ рд╣реА рдлреНрд▓реИрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдкрдбрд╝реА 5 рдорд┐рд▓рд┐рдпрди рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╛ рддреЛ рд╡реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ / рдПрдЪрдбреАрдбреА рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ, рдпрд╛ рд╡реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рд▓реЗрдВрдЧреЗред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рдордп рд▓рд┐рдпрд╛, рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЗрдЯ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд┐рдпрд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рджреЛрдиреЛрдВ рдиреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджрд┐рдП рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦреЛрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╛рдПред
рдЯреНрд░реЗрдирд┐рдВрдЧ
рдЪреВрдБрдХрд┐ рдЖрдк рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдЕрдкрдиреЗ HDD рдкрд░ рдПрдХ рднреАрдбрд╝ рднрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдорди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ FS рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд▓реВрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд▓рд┐рдирдХреНрд╕ рдкрд░, рдпрд╣ рдЖрд╕рд╛рди рд╣реИред
рдПрдХ рдЦрд╛рд▓реА 200GB рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
рдХрдИ рд▓реЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП dd рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП dd if=/dev/zero of=disk-image bs=1M count=1M
, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрддреБрд▓рдиреАрдп рд░реВрдк рд╕реЗ рдзреАрдорд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдпрд╣ рд╕рдорд╛рди рд╣реИред
рдлрд╝рд╛рдЗрд▓ рдХреЛ ext4 рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ
mkfs -t ext4 -q sparse
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж mkfs.ext4 рдХрдорд╛рдВрдб рдХреЗ -N рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рд╛рдП рдмрд┐рдирд╛ рдПрдлрдПрд╕ рдкрд░ рдЗрдиреЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реАрдорд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рджреВрд╕рд░реА рдУрд░, рдорд╛рдирдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдХрд░реАрдм рд╣реИрдВред
рд╣рдо рдХрдИ рдЦрд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрд╣ рдХрдИ рдШрдВрдЯреЛрдВ рддрдХ рдХрд╛рдо рдХрд░реЗрдЧреА)
рд╡реИрд╕реЗ, рдЕрдЧрд░ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдереАрдВ, рддреЛ рдмрд╛рдж рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдард╣рд░рд╛рд╡ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдХрд░реНрдиреЗрд▓ рдХреА рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИред рдЗрддрдиреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдХ рдлреНрд▓реИрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рд╣рдо рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ FS рдкрд░ рд╕рднреА рдЖрдпрддреЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИрдВред
$ df -i
/ рджреЗрд╡ / рд▓реВрдк режрезрейреж 13реирежреж резрейрезреж 3реи рей рей 100релрез 13 резрежреж% / mnt
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ ~ 360Mb
$ ls -lh / mnt /
drwxrwxr-x 2 seriy seriy 358M рдиреЛрд╡ 1 03:11 test_dir
рдЕрдм рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрдкрдиреА рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг
рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреИрд╢ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ
sudo sh -c 'sync && echo 1 > /proc/sys/vm/drop_caches'
рдЖрджреЗрд╢ рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рд╕рднреА рдореЗрдореЛрд░реА рдирд╣реАрдВ рд▓реЗрдиреЗ рдФрд░ рд╕рдорд╛рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╣рдЯрд╛рдиреЗ рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
Rm -r рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛
$ rm -r /mnt/test_dir/
getdents()
рддрд╣рдд, рдХрдИ рдмрд╛рд░ рдПрдХ рдкрдВрдХреНрддрд┐ (!!!) рдореЗрдВ
getdents()
) рдХреЙрд▓ рдХрд┐рдпрд╛
getdents()
, рдлрд┐рд░ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ
unlinkat()
рдФрд░ рдПрдХ рд▓реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
30Mb RAM рд▓рд┐рдпрд╛, рдмрдврд╝ рдирд╣реАрдВ рд░рд╣рд╛ред
рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рдЯрд╛рддрд╛ рд╣реИред
iotop
7664/4 рд╕реЗрд░реА 72.70 рдПрдо / рдПрд╕ 0.00 рдмреА / рдПрд╕ 0.00% 93.15% рдЖрд░рдПрдо -рдЖрд░ / рдПрдордПрдирдЯреА / рдЯреЗрд╕реНрдЯ_рдбрд┐рд░ /
5919/0 рд░реВрдЯ 80.77 M / s 16.48 M / s 0.00% 80.68% [рд▓реВрдк 0]
рдпрд╛рдиреА
rm -r ///
рд╕рд╛рде рднреАрдбрд╝ рд╡рд╛рд▓реА рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдХреЛ рд╣рдЯрд╛рдирд╛ рдареАрдХ рд╣реИред
Rm ./* рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдЯрд╛рдирд╛
$ rm /mnt/test_dir/*
рд╢реЗрд▓ рдХреА рдПрдХ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ
600MB рддрдХ рдмрдврд╝ рдЧрдпрд╛
рд╣реИ ,
^C
рд▓рд┐рдП nailed
^C
рдХреБрдЫ рднреА рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рддрд╛рд░рд╛рдВрдХрди рджреНрд╡рд╛рд░рд╛
glob
рдХреЛ рд╢реЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╣реА рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рдж
rm
рдХрдорд╛рдВрдб рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдвреВрдБрдвреЗрдВ -exec рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
$ find /mnt/test_dir/ -type f -exec rm -v {} \;
getdents()
рддрд╣рдд, рдпрд╣ рдХреЗрд╡рд▓
getdents()
рдХрд╣рддрд╛ рд╣реИред the
^C
рджреНрд╡рд╛рд░рд╛ nailed рдХреА
find
рдкреНрд░рдХреНрд░рд┐рдпрд╛
600MB рддрдХ рдмрдврд╝ рдЧрдИ
^C
рдХреБрдЫ рднреА рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рд╢реЗрд▓ рдореЗрдВ * рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ - рдкрд╣рд▓реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИред
рдЦреЛрдЬ-рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдЯрд╛рдирд╛
$ find /mnt/test_dir/ -type f -delete
600MB рддрдХ рдмрдврд╝ рдЧрдпрд╛,
^C
рджреНрд╡рд╛рд░рд╛ nailed
^C
рдХреБрдЫ рднреА рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдкрд┐рдЫрд▓реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рдорд╛рдиред рдФрд░ рдпрд╣ рдмреЗрд╣рдж рдЕрджреНрднреБрдд рд╣реИ! рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕ рдЯреАрдо рдкрд░ рдЕрдкрдиреА рдЙрдореНрдореАрджреЗрдВ рд▓рдЧрд╛рдИрдВред
Ls -f рдФрд░ xargs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛
$ cd /mnt/test_dir/ ; ls -f . | xargs -n 100 rm
-f рд╡рд┐рдХрд▓реНрдк рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рддрд╛ рд╣реИ:
| - рдПрд▓рдПрд╕ 212 рдХреЗрдмреА
| - xargs 108Kb
| - rm 130Kb # rm рдкрд░ pid рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ
рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рдЯрд╛рддрд╛ рд╣реИред
iotop # рдмрд╣реБрдд рдХреВрджрддрд╛ рд╣реИ
рел реп рез реп рд╣реЛ / реж рд░реВрдЯ рел. M / рдПрдо / рдПрд╕ рем.реи / рдПрдо / рдПрд╕ реж.режреж%% реп .резрел% [рд▓реВрдк реж]
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ
ls -f
find
рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдЬрдорд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
ls
рдмрд┐рдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ (рдЬреИрд╕реЗ
find
) - рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдзрд┐ рдЦрд░рд╛рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рдЧрд╛рддрд╛рд░
rm
рдХрд╣рддреА рд╣реИ, рдЬреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрд░рд┐ рдмрдирд╛рддрд╛ рд╣реИред
рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ - рдЖрдк рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
ls -f
рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕ рд╕реВрдЪреА рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░реНрд▓ рд░реАрдбрдбреАрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
$ perl -e 'chdir "/mnt/test_dir/" or die; opendir D, "."; while ($n = readdir D) { unlink $n }'
$ perl -e 'chdir "/mnt/test_dir/" or die; opendir D, "."; while ($n = readdir D) { unlink $n }'
(
рдпрд╣рд╛рдВ рдЪреБрдирд╛
рдЧрдпрд╛ )
getdents()
рддрд╣рдд
strace
рдпрд╣
getdents()
рдПрдХ рдмрд╛рд░ рдХреЙрд▓
getdents()
, рдлрд┐рд░ рдХрдИ рдмрд╛рд░
unlink()
рдФрд░ рдЗрд╕реА рддрд░рд╣ рд▓реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрдврд╝рддреЗ рд╣реБрдП рдирд╣реАрдВ, рдореЗрдореЛрд░реА рдХреА
380Kb рд▓реЗ рдЧрдпрд╛ред
рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рдЯрд╛рддрд╛ рд╣реИред
iotop
7591/4 рд╕реЗрд░реА 13.74 M / s 0.00 B / s 0.00% 98.95% perl -e chdi ...
рел реп рез реп рд╣реЛ / реж рд░реВрдЯ резрез.рез M рдореЗрд╕рд░реНрд╕ резрекрей8. / / K / s реж.режреж% реп рей. %рел% [рд▓реВрдк реж]
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд░реАрдбрд┐рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ?
рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░реАрдбрд┐рд░ + рдЕрдирд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
$ gcc -o cleandir cleandir.c
$ ./cleandir
getdents()
рддрд╣рдд
strace
рдпрд╣
getdents()
рдПрдХ рдмрд╛рд░ рдХреЙрд▓
getdents()
, рдлрд┐рд░ рдХрдИ рдмрд╛рд░
unlink()
рдФрд░ рдЗрд╕реА рддрд░рд╣ рд▓реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣
128Kb рдореЗрдореЛрд░реА
рд▓реЗрддрд╛ рд╣реИ , рдмрдврд╝рддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рдЯрд╛рддрд╛ рд╣реИред
iotop:
7565/4 рд╕реЗрд░реА 11.70 M / s 0.00 B / s 0.00% 98.88% ./cleandir
рел реп рез реп рд╣реЛ / реж рд░реВрдЯ резреи.реп / рдПрдо / рдПрд╕ резреж3 реп .реирей рдХреЗ / рдПрд╕ реж.режреж% реп реи.рекреи% [рд▓реВрдк реж]
рдлрд┐рд░ рд╕реЗ, рд╣рдо рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдореЗрдореЛрд░реА рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдЬрдорд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рддреБрд░рдВрдд рд╣рдЯрд╛рддреЗ рд╣реИрдВ рддреЛ
readdir
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
- рдЖрдк рд▓рд╛рдЦреЛрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
readdir()
+ unlink()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред - рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ,
rm -r /my/dir/
, рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдпрд╣ рдЕрдзрд┐рдХ рдЪрддреБрд░рд╛рдИ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдкрд╣рд▓реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреА рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИ, readdir()
рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рд╕реВрдЪреА рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдкрд░ рд▓реЛрдб рдХреЛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред - рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
nice
рдпрд╛ ionice
рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЫреЛрд░реЛрдВ рдореЗрдВ рдЫреЛрдЯреА рдиреАрдВрдж () рдбрд╛рд▓реЗрдВред рдпрд╛ ls -l
рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдзреАрдореА рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВред - рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд▓рд┐рдЦреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдмрд╛рдд рдкрд░ рдпрдХреАрди рди рдХрд░реЗрдВ! рд╡рд┐рднрд┐рдиреНрди рдмреНрд▓реЙрдЧ рдЕрдХреНрд╕рд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЯреВрдЯреЗ рд╣реБрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред
рдкреБрдирд╢реНрдЪ: рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛; os.listdir () рдФрд░ os.walk () рдкреВрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрдврд╝реЗрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ PHP рдореЗрдВ рднреА
рд░реАрдбрд┐рд░ рд╣реИ ред