ඉඩ ඉවත් කිරීමට සහ නිදහස් කිරීමට විශාල ගොනු / නාමාවලි සොයා ගැනීමට විධාන රේඛා ක්‍රමයක් කුමක්ද?


217

ධාවකයක ඇති විශාලතම ලිපිගොනු මට පෙන්වන විධාන මාලාවක් සොයමින්.


චිත්‍රමය යමක් හොඳ වේද?
රෝලන්ඩික්සෝර්

5
නැත, ssh හරහා විධාන රේඛාවේ ධාවනය වේ.
රයන් ඩෙට්සෙල්

අමුතුම දෙය නම් මට එකම දේ ක්‍රියාත්මක වන සේවාදායක දෙකක් තිබේ. එකක් තැටි භාවිතයේ 50% ක් වන අතර අනෙක 99% කි. මෙයට හේතුව කුමක්දැයි මට සොයාගත නොහැක.
රයන් ඩෙට්සෙල්

Answers:


290

ඔබට විශාල ගොනු සොයා ගැනීමට අවශ්‍ය නම්, ඔබට විකල්පය findසමඟ භාවිතා කළ -sizeහැකිය. ඊළඟ විධානය මඟින් 10MiB ට වඩා විශාල ගොනු ලැයිස්තුගත කරනු ඇත ( 10MB සමඟ පටලවා නොගත යුතුය ):

find / -size +10M -ls

ඔබට යම් ප්‍රමාණයක් අතර ලිපිගොනු සොයා ගැනීමට අවශ්‍ය නම්, ඔබට එය "සෙවීමට වඩා අඩු" ප්‍රමාණයක් සමඟ ඒකාබද්ධ කළ හැකිය. ඊළඟ විධානය මඟින් 10MiB සහ 12MiB අතර ලිපිගොනු සොයා ගනී:

find / -size +10M -size -12M -ls

apt-cache search 'disk usage'තැටි භාවිත විශ්ලේෂණය සඳහා ඇති සමහර වැඩසටහන් ලැයිස්තුගත කරයි. ඉතා හොඳ පෙනුමක් ඇති එක් යෙදුමක් gt5.

ඇසුරුම් විස්තරයෙන්:

වසර ගණනාවක් ගෙවී ගොස් ඇති අතර තැටි විශාල හා විශාල වී ඇත, නමුත් මෙම ඇදහිය නොහැකි තරම් විශාල දෘඩ තැටි යුගයේ දී පවා කාලයත් සමඟ අවකාශය අතුරුදහන් වන බව පෙනේ. මෙම කුඩා හා programs ලදායී වැඩසටහන් පෙරනිමි ඩු (1) ට වඩා පහසු ලැයිස්තුගත කිරීමක් සපයයි. එය අවසන් ධාවනයේ සිට සිදුවී ඇති දේ පෙන්වන අතර dir ප්‍රමාණය සහ මුළු ප්‍රතිශතය පෙන්වයි. පෙළ පදනම් කරගත් බ්‍රව්සරය (සබැඳි, එලින්ක්ස්, ලින්ක්ස් ආදිය) සමඟ කර්සරය යතුරු භාවිතා කිරීමෙන් ඩිරෙක්ටරි වෙත සැරිසැරීමට සහ නැගීමට හැකිය.

Gt5 හි තිර රුව

වන "අදාළ වන පැකේජ" කොටස මත gt5 , මට ncdu. එහි ඇසුරුම් විස්තරයෙන්:

Ncdu යනු ncurses මත පදනම් වූ du viewer ය. එය සුප්‍රසිද්ධ ඩු උපයෝගීතාව හරහා වේගවත් හා පහසුවෙන් භාවිතා කළ හැකි අතුරු මුහුණතක් සපයයි. එය නාමාවලි හරහා සැරිසැරීමට සහ ncurses පුස්තකාලය සමඟ තැටි භාවිතයේ ප්‍රතිශත පෙන්වීමට ඉඩ දෙයි.

Ncdu හි තිර රුව


3
ncdu ඉතා ඉක්මන් වන අතර මට අවශ්‍ය දේ පමණක් ස්තූතියි, ස්තූතියි! මම gt5 ද උත්සාහ කර ඇත්තෙමි, නමුත් එය අවලංගු කර ඇත්තේ එය ඕනෑම වේලාවක "සිතීම" නිසා / ප්‍රතිපෝෂණ
ලූකස් ලයිසිස්

8
ශුද්ධ කපටිය, ncdu පුදුම සහගතයි, ඔබේ සොයාගැනීම් බෙදා ගැනීමට ස්තූතියි!
අතර-ඊ

Ncdu වඩා ශක්තිමත් ලෙස පෙන්වා දුන්නොත් මම කැමතියි . මට වරකට වරක් එය අවශ්‍ය වන අතර මට නම මතක නැත.
මාටින් තෝමා

Ncdu ට ස්තූතියි විධාන මතක තබා ගැනීම ප්‍රමාණවත් :)
කෝඩර් මහතා

2
atmatt Nope, ප්‍රතිදානය සඳහා ප්‍රතිදාන ආකෘතිය දෘ c-ls කේත කර ඇත (ප්‍රභව කේතය pred_flsසහ list_file කාර්යයන් බලන්න). ඔබට -printfවිකල්පය භාවිතා කර ප්‍රතිදානය දළ වශයෙන් find ... -type f -exec ls -ldh {} \; | column -t
ගණනය

36

මම භාවිතා කරන්නේ duසහ sort.

sudo du -sx /* 2>/dev/null | sort -n

0   /cdrom
0   /initrd.img
0   /lib64
0   /proc
0   /sys
0   /vmlinuz
4   /lost+found
4   /mnt
4   /nonexistent
4   /selinux
8   /export
36  /media
56  /scratchbox
200 /srv
804 /dev
4884    /root
8052    /bin
8600    /tmp
9136    /sbin
11888   /lib32
23100   /etc
66480   /boot
501072  /web
514516  /lib
984492  /opt
3503984 /var
7956192 /usr
74235656    /home

එවිට එය මෙයට පිළියමක් සහ නැවත නැවත සිදු කිරීමකි . ඔබ ඉතා විශාල යැයි සිතන උප බහලුම් ඉලක්ක කර, ඒවා සඳහා විධානය ක්‍රියාත්මක කර ගැටළුවට හේතුව කුමක්දැයි ඔබ සොයා ගනී.

සටහන: මම භාවිතා duගේ -xඑක් ගොනු පද්ධතිය සීමා දේවල් තබා ගැනීමට ධජය (මම SSD හා RAID5 අතර හරස් සවිකර දේවල් ඉතා සංකීර්ණ සැලැස්මක් තියෙනවා).

සටහන 2: 2>/dev/nullඕනෑම දෝෂ පණිවිඩයක් අමතක කිරීමට හරවා යවයි. ඔවුන් ඔබට කරදර නොකරන්නේ නම් එය අනිවාර්ය නොවේ.


1
මම මෙම විධානය ක්‍රියාත්මක කරන විට du ළමා නාමාවලි වලට බැස යයි. සිට duමිනිසා පිටුව: "ඇත්තෙන් වෙනසට භාජනය බහලුම් සඳහා, එක් එක් ගොනුව තැටි භාවිතය කෙටියෙන් කියන්න."
ජේමි

32

මගේ ප්‍රියතම විසඳුම මෙම හොඳ පිළිතුරු කිහිපයකින් මිශ්‍රණයක් භාවිතා කරයි.

du -aBM 2>/dev/null | sort -nr | head -n 50 | more

du තර්ක:

  • -a"සියලුම" ගොනු සහ නාමාවලි සඳහා. නාමාවලි සඳහා පමණක් තබන්න
  • -BM ප්‍රමාණයන් මෙගාබයිට් (එම්) බ්ලොක් ප්‍රමාණවලින් (බී) ප්‍රතිදානය කිරීමට
  • 2>/dev/null - "අවසර ප්‍රතික්ෂේප කරන" දෝෂ පණිවිඩ බැහැර කරන්න (ස්තූතියි @ ඕලි)

sort තර්ක:

  • -n "සංඛ්‍යාත්මක" සඳහා
  • -r "ආපසු හැරවීම" සඳහා (විශාලතම සිට කුඩාම දක්වා)

head තර්ක:

  • -n 50 ඉහළම ප්‍රති .ල 50 සඳහා.
  • moreකුඩා අංකයක් භාවිතා කරන්නේ නම් ඉවත්ව යන්න

සටහන: sudoඔබගේ ගිණුමට ප්‍රවේශ වීමට අවසර නොමැති නාමාවලි ඇතුළත් කිරීමට උපසර්ගය .

/ Var හි ඉහළම විශාලතම ලිපිගොනු සහ නාමාවලි 10 පෙන්වන උදාහරණය (මුළු එකතුව ඇතුළුව).

cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M   .
6794M   ./lib
5902M   ./lib/mysql
3987M   ./lib/mysql/my_database_dir
1825M   ./lib/mysql/my_database_dir/a_big_table.ibd
997M    ./lib/mysql/my_database_dir/another_big_table.ibd
657M    ./log
629M    ./log/apache2
587M    ./log/apache2/ssl_access.log
273M    ./cache

14

වත්මන් ෆෝල්ඩරයේ විශාලතම ඉහළම -20 නාමාවලි (පුනරාවර්තන ලෙස) පෙන්වීමට, පහත දැක්වෙන එක්-ලයිනර් භාවිතා කරන්න:

du -ah . | sort -rh | head -20

හෝ (වැඩි යුනික්ස් නැඹුරු):

du -a . | sort -rn | head -20

වත්මන් නාමාවලියෙහි ඉහළම -20 විශාලතම ගොනු සඳහා (පුනරාවර්තන ලෙස):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

හෝ මිනිසුන්ට කියවිය හැකි ප්‍රමාණයන් සමඟ:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

-hඑය GNU සඳහා sortපමණක් ලබා ගත හැකි බව කරුණාවෙන් සලකන්න , එබැවින් එය OSX / BSD මත නිසියාකාරව ක්‍රියාත්මක වීමට නම්, ඔබ එය ස්ථාපනය කළ යුතුය coreutils. ඉන්පසු එහි ෆෝල්ඩරය ඔබේ තුළට එක් කරන්න PATH.

එබැවින් මෙම අන්වර්ථ නාමයන් ඔබේ rc ලිපිගොනු වල තිබීම ප්‍රයෝජනවත් වේ (ඔබට අවශ්‍ය සෑම අවස්ථාවකම):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

10

qbi ගේ පිළිතුර නිවැරදි නමුත් ලිපිගොනු විශාල ප්‍රමාණයක් ඇති විට එය ඉතා මන්දගාමී වනු ඇත, මන්ද එය එක් එක් අයිතමය සඳහා නව ls ක්‍රියාවලියක් ආරම්භ කරනු ඇත.

ළමා ක්‍රියාදාමයන් නොමැතිව සොයා ගැනීම භාවිතා කිරීම වඩා වේගවත් අනුවාදයක් වනුයේ ප්‍රමාණය බයිට් (% s) සහ මාර්ගය (% p) මුද්‍රණය කිරීම සඳහා printf භාවිතා කිරීමයි.

find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries


1
මෙය වඩා වේගවත් බව තහවුරු කරන්න
කුකී

9

මෙය පරිපූර්ණ යෙදුම ලෙස පෙනේ find:

find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5

මෙම විධානය මඟින් ඩිරෙක්ටරියේ ඇති සියලුම ගොනු සොයාගෙන ඒවා $DIRECTORYක්‍රියාත්මක ls -sකරනු ඇත. අවසාන විධානය මඟින් ගොනුවක වෙන් කළ ප්‍රමාණය සහ ගොනු නාමය මුද්‍රණය කරයි. ප්‍රති result ලය සංඛ්‍යාත්මකව වර්ග කර ඇති අතර අවසාන ඇතුළත් කිරීම් පහ පෙන්වනු ලැබේ. එහි ප්‍රති result ලයක් ලෙස ඔබට විශාලතම ගොනු 5 $DIRETORYහෝ ඕනෑම උප බහලුමක් පෙනෙනු ඇත . ඔබ ඇතුළු කළහොත් ඔබට tail -n 1පෙනෙන්නේ විශාලතම ගොනුව පමණි.

තවද ඔබට බොහෝ දේ සමඟ සෙල්ලම් කළ හැකිය find. උදාහරණයක් ලෙස ඔබට දින n ( -ctime -n) ට වඩා අඩු හෝ විශේෂ පරිශීලකයින්ට ( -user johndoe) අයත් ගොනු සෙවිය හැකිය .


5

මට සේවාදායකයන්හි වැඩි ඉඩ ප්‍රමාණයක් අවශ්‍ය වූ විට මම මෙම විධානය භාවිතා කරමි. එමඟින් සියළුම ලිපිගොනු විශාල වන අතර 50 MB සහ "du -h" වඩා හොඳ ලිපිගොනු ලැයිස්තුවක් සාදනු ඇති අතර නල මාර්ගයෙන් පසුව "sort -n" ලැයිස්තුගත කරන්න.

find / -size +50M -type f -exec du -h {} \; | sort -n

1

Baobab උත්සාහ කරන්න, එය ඔබට ලිපිගොනු සහ ෆෝල්ඩර පිළිබඳ චිත්‍රමය දළ විශ්ලේෂණයක් ලබා දෙයි, සැබෑ අවකාශය කොතැනදැයි ඔබට දැකගත හැකි අතර එක ක්ලික් කිරීමකින් ඒවා මකා දැමිය හැකිය https://help.ubuntu.com/community/Baobab


2
මෙම විශේෂිත ප්‍රශ්නයේදී OP විධාන රේඛා ක්‍රමයකට වැඩි කැමැත්තක් දක්වයි. ප්රශ්නයට අදහස් බලන්න. මම ප්‍රශ්නය ද සංස්කරණය කරමි.

1

උදාහරණයක් ලෙස සියලුම GB ලිපිගොනු සොයා ගැනීමට මම du සහ grep භාවිතා කරමි, නමුත් මෙහි සඳහන් අනෙක් ක්‍රම ද විශිෂ්ට බව පෙනේ.

du -h -a /dir | grep "[0-9]G\b"  

ඩු සතුව ඇති --except විකල්පය සමඟ ඔබට විසිතුරු බවක් ලබා ගත හැකිය.


1

එය පිළිතුරු දී නමෙන්ම විශාල, පරිශීලක හිතකාමී මෙවලමක් හා සමාන ප්රශ්නයක් වන්නේ NCurses Disk Usageමෙවලමක්:

sudo ncdu /

හොඳයි, ගොනු පද්ධතියේ මුල සිට ආරම්භ කිරීම මට තේරුමක් නැති දෙයකි. සමස්ත ගොනු පද්ධතිය හරහා අවකාශය ඉතිරි කිරීම ඉලක්ක කර ගත හැකි වැදගත්ම ස්ථාන හඳුනා ගැනීමට එය මට ඉඩ ලබා දුන්නේය. කෙසේ වෙතත්, ඔබට ඕනෑම නාමාවලියකින් ආරම්භ කිරීමට සඳහන් කළ දේ භාවිතා කළ හැකිය. එම මෙවලම සඳහා ලියකියවිලි පරීක්ෂා කරන්න. එහෙත්, ඉල්ලා ඇති පරිදි, මූලාශ්‍ර පිළිතුරට සබැඳිය මෙන්න .
ජැනොසයිඩ්

0

ඔබට ගොනු ප්‍රමාණය අනුව වර්ග කළ හැකිය:

find . -type f -exec du -h {} \; | sort -k1 -h

එය ගොනු පමණක් සොයාගෙන du -hසෑම ගොනුවක් සඳහාම ක්‍රියාත්මක කරයි , එය ගොනුවේ ප්‍රමාණය පෙන්වයි. අවසාන වශයෙන්, අපි පළමු තීරුවට අනුව find/ ප්‍රතිදානය du(මානව කියවිය හැකි ආකෘතියෙන්) වර්ග කරමු.

අවසන් වරට මුද්‍රණය කරන ලද ගොනුව විශාලතම එකකි.


0

නාමාවලි මඟ හැරීමේදී විශාලතම ලිපිගොනු බැලීමට ඔබට විධානය භාවිතා කළ හැකිය:

sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10

100MiB ට වඩා විශාල සියලුම ගොනු සොයා ගැනීමට (මෙය 100MB නොවේ, ඔබ ව්‍යාකූල නම් මෙහි බලන්න ):

find / -size +100M -ls

පහත විධානය මඟින් ෆෝල්ඩරයේ විශාලතම ගොනු 5 පෙන්වනු ඇත $DIRECTORY:

find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5

භාවිතා කිරීම du: ඩු භාවිතා කරන පහත විධානය, නිවසේ වැඩ කරන ෆෝල්ඩරයේ විශාලතම ප්‍රමාණ 20 සහිත නාමාවලි පෙන්වන්න:

sudo du -a /home | sort -n -r | head -n 20

දැන් උප ෆෝල්ඩර ඇතුළු විශාලතම නාමාවලි / ගොනු ප්‍රදර්ශනය කිරීම සඳහා, ධාවනය කරන්න:

du -Sh | sort -rh | head -n 10

භාවිතා කිරීම ls:

/ Bin නාමාවලියෙහි ඇති විශාලතම විශාලතම ගොනු 5 ලැයිස්තුගත කිරීමට, පහත විධානය නිකුත් කරන්න:

ls -lSh /bin | head -5

ඔබ ද තැටි භාවිතය Analyzer හෝ භාවිතා කළ හැකිය Baobao පෙන්වා ඇති පරිදි මෙහි උදාහරණයක්.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.