Disk df -hl` থেকে ডিস্ক ব্যবহারের শতাংশ কীভাবে প্রিন্ট করা যায় `


12

আমি জানি যে df -hlএটির আকার, শতাংশ হিসাবে ব্যবহার এবং উপলভ্য স্থান সহ আমার সমস্ত পার্টিশনের একটি তালিকা আউটপুট করে।

যদি আমি আউটপুট মাত্র আকার এবং শতকরা হিসাবে ব্যবহার করতে চেয়েছিলেন sda2এবং sda3উদাহরণস্বরূপ, আমি লিনাক্স (উবুন্টু) তাদের চেক করতে বলছি, তাদের যোগফল এবং সেই গুলো আমাকে দেখাতে পারে?


1
নীচের উত্তরগুলি df কমান্ডটি পরিবর্তন করে তারা সমস্ত ডিস্কের পার্সিংয়ের পরিবর্তে df কমান্ড লাইনে ডিস্কগুলি প্রয়োগ করার মাধ্যমে সহজ করতে পারে। অর্থাত্ ডিএফ-এইচএল / দেব / এসডিএ [23]
এমডিপিসি

উত্তর:


11

dfমোট গণনা করার জন্য , --totalsবিকল্পটি ব্যবহার করুন । আপনি যদি কেবল কয়েকটি নির্বাচিত ড্রাইভের মধ্যে মোট চান, তাদের আর্গুমেন্ট হিসাবে নির্দিষ্ট করুন।

উদাহরণ (এবং আমার কম্পিউটার থেকে আউটপুট)

সমস্ত স্থানীয় মাউন্টগুলির জন্য এটি মোট:

$ df --total -hl
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb1              14G   12G  2,1G  85% /
none                  490M  660K  489M   1% /dev
none                  497M  1,5M  495M   1% /dev/shm
none                  497M  260K  496M   1% /var/run
none                  497M     0  497M   0% /var/lock
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
total                  19G   12G  7,3G  62%

কয়েকটি ড্রাইভে সীমাবদ্ধ (লক্ষ্য করুন যে নির্দিষ্ট পথটি যদি সঠিক মাউন্ট পয়েন্ট না হয় তবে নিকটস্থ মাউন্ট পয়েন্ট ব্যবহার করা হয় [শেষে নোট দেখুন] ):

$ df -hl --total /home /fastdisk
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb1              14G   12G  2,1G  85% /
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
total                  17G   12G  5,3G  69%

বা devনাম ব্যবহার করে :

$ df -hl --total /dev/sda1 /dev/sdb1
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
/dev/sdb1              14G   12G  2,1G  85% /
total                  17G   12G  5,3G  69%

আরও কাস্টমাইজেশন

আপনি যদি 'বিশেষ' বাদে সমস্ত মাউন্টগুলির তালিকা করতে চান, আপনি -xপার্টিশন টাইপ দ্বারা বাদ দেওয়ার বিকল্পটি ব্যবহার করতে পারেন । ( -Tপ্রকারগুলি দেখানোর জন্য বিকল্পটি ব্যবহার করুন ))

ব্যক্তিগতভাবে, ইন্টারেক্টিভ ব্যবহারের জন্য, আমি ~/.bash_aliases'অ-শারীরিক' মাউন্টগুলি বাদ দিতে নিম্নলিখিত ব্যাশ ওরফে (যুক্ত ) ব্যবহার করি ।

alias df='df -h -x devtmpfs -x tmpfs -x debugfs'

বিঃদ্রঃ

মাউন্ট পয়েন্টগুলির মধ্যে পাথ নির্দিষ্ট করে তোলার ফলে কিছু সময় বিভিন্ন ফলাফল পাওয়া যায় যা মাউন্ট পয়েন্টের সঠিক পথটি নির্দিষ্ট করে। উদাহরণস্বরূপ, আমার ল্যাপটপে আমি sshfsআমার (স্থানীয়) ফাইল-সার্ভারটি মাউন্ট করতে ব্যবহার করি ।

df -h ~/.server-root/ ~/.server-root/disks/A ~/.server-root/disks/B
Filesystem            Size  Used Avail Use% Mounted on
johan@server:/        185G   58G  118G  33% /home/johan/.server-root
johan@server:/        1,9T  637G  1,2T  35% /home/johan/.server-root
johan@server:/        1,8T  1,1T  757G  59% /home/johan/.server-root

সার্ভার রুট ( /) মাউন্ট করা হয়েছে ~/.server-root। যাইহোক, সার্ভারে, ডিস্কগুলি মাউন্ট করা হয় /disks/*, যা df(ল্যাপটপে) সম্পর্কে 'জানেন না'।

dfযথাযথ পথ দেওয়া থাকলে স্পষ্টতই সার্ভারের বিভিন্ন মাউন্টগুলিতে ডিস্কের ব্যবহারের তালিকা তৈরি করতে পারে। তবে, এটি সমস্ত পাথের জন্য একই "ফাইল সিস্টেম" এবং "মাউন্ট ইন" দেখায়, যেহেতু (আমি বিশ্বাস করি)sshfs স্থানীয় কার্নেল মাউন্ট টেবিলের একমাত্র মাউন্ট পয়েন্ট (এই মাউন্ট সম্পর্কিত)।


আরেকটি বিষয়: প্রশ্নের সাথে আসলেই সম্পর্কিত নয়, তবে প্রশ্নের আগের উত্তরের সাথে সম্পর্কিত ।

awkকোনও পূর্ববর্তী পোস্ট করা উত্তরগুলির মতো কোনও স্ক্রিপ্টের (বা অনুরূপ) সাথে সংখ্যা যুক্ত করা পতাকাটি ব্যবহার করার সময় ভাল ধারণা নয়-h । এটি কারণ বিশেষ হ্যান্ডলিং প্রয়োজন required আপনি কেবল এক সারি এবং অন্য সারণী size+=$2;ক্ষেত্রের জন্য এটি করতে পারবেন না 418Mএবং এর 12Gথেকে দরকারী কিছু পান ...

উদাহরণস্বরূপ awk, ফলন যোগ 500Mকরা 10.2G

$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2

510.2 কি?

এখানে স্পষ্টতই একটি সমস্যা রয়েছে। সুতরাং, মনে রাখার মতো একটি টিপ হিসাবে , যখন df (এবং অন্যরা 'মানব পাঠযোগ্য' সংখ্যা ব্যবহার করতে পারে ) এর আউটপুটে গণনা (স্বয়ংক্রিয়) করার সময় । নিশ্চিত করুন যে আপনি পতাকাটি ব্যবহার করছেন না-h এবং গণনা স্ক্রিপ্টের ইনপুটটি পরিবর্তিতভাবে স্বাভাবিক করা হয়েছে (উদাহরণস্বরূপ বাইটস, ব্লক, কেবি, অথবা যে কোনও ক্ষেত্রে) এবং শেষে 'ডিসপ্লে স্কেলিং' করুন। বেশিরভাগ স্ক্রিপ্টিং এবং প্রোগ্রামিং ভাষায় এমন কিছু যুক্ত করা শক্ত নয়:

If value < threshold Then
  print (value),"B"
Else If value < 1024*threshold Then
  print (value/1024),"kB"
Else If value < 1024*1024*threshold Then
  print (value/1024/1024),"MB"
(and so on...)

যেখানে মানটি বাইট এবং প্রান্তিকের মধ্যে থাকে 1000 এর ক্রম অনুসারে একটি মান The এই পদ্ধতির ফলস্বরূপ হ'ল আপনি সহজেই পছন্দসই পরিসরে মুদ্রিত মানগুলি (উপসর্গটি বাদ দিয়ে) উত্পাদন করতে এবং আপনার কাছে বেশ কয়েকটি উল্লেখযোগ্য অঙ্ক সহ টিউন করতে পারেন your নির্বাচন। -hস্যুইচগুলির সাথে স্ট্যান্ডার্ড ইউটিলিটিগুলির সাথে কেস তুলনা করা হয় , যেখানে ফর্ম্যাটটি প্রায়শই স্থির হয়।

অবশ্যই, এই গণনাটি প্রায়শই আরও দক্ষ এবং / বা মার্জিত করা যায় তবে এটি নির্দিষ্ট ভাষায় লেখা একটি প্রশ্ন যা সত্যই বলা যায়, এটি যদি এখন কোনও ইউজার স্ক্রিপ্টে ব্যবহৃত হয় যা কেবলমাত্র এখন চালিত হয় এবং তারপরে ইন্টারেক্টিভভাবে দেখার জন্য কিছু তথ্য, দক্ষতা সত্যিই উদ্বেগ নয়।


4

আমি মনে করি আপনি উভয়ের যোগফল চেয়েছিলেন sizeএবংuse%

 df -hl | grep 'sda2\|sda3' | awk 'BEGIN{print "Size","Use%"} {size+=$2;percent+=$5;} END{print size,percent}' | column -t

ডিট্টো, উপরের মতোই।
ব্যবহারকারী32398

@ ব্যবহারকারী32398: পার্থক্য ডাব আছে।
প্রদীপচেত্রী

এই প্রশ্নের আমার উত্তর শেষে আমি কেন এই প্রশ্নের সরলবাদী অ্যাড-অ্যাপ্রোচ (ন্যায়সঙ্গত size+=$1) ব্যবহার করবেন না সে সম্পর্কে কিছুটা বিশদভাবে ব্যাখ্যা করেছি । এই পদ্ধতিটি -hবিকল্পগুলির সাথে সত্যই সামঞ্জস্যপূর্ণ নয় df
জোহান ই

2

আপনি এই জাতীয় সরঞ্জাম ব্যবহার করবেন awk:

df -hl | awk '/^\/dev\/sd[ab]/ { sum+=$5 } END { print sum }'

কোথায়:

  • /^\/dev\/sd[ab]/কেবল সেই লাইনগুলি ফিল্টার করার জন্য একটি প্যাটার্ন যা শুরু হয় /dev/sdaবা দিয়ে/dev/sdb
  • { sum+=$5 } উপরের প্যাটার্নের কোনও ম্যাচের জন্য পঞ্চম ক্ষেত্রটি যুক্ত করুন

আপনি Awk.info উইকিতে কিছু সহায়ক awkতথ্যসূত্র পেতে পারেন ।


আমি মনে করি এটি% যোগ করার জন্য কল্পনা করা হয়নি, তবে ধন্যবাদ আমি ধারণাটি পেয়েছি।
ব্যবহারকারী32398

1
sudo df -hl | grep 'mountdirname' | awk '{print $5}'

1
তিনি চাইলেন size, % usedএবং available। শুধু% ব্যবহৃত হয় নি। এছাড়াও @ এমডিপিসি এর ড্রাইভ একক করার জন্য আরও ভাল পদ্ধতি আছে তবে আপনি ম্যাচটি df -hl | awk '/sda2/{print $2,$5,$4}'
পাতলা

0

আপনি যদি এটি সতর্কতা সহ চান, আমি এটি আইএফটিটিটি, টেলিগ্রাম এবং ওয়েবহুকগুলি দিয়ে করি (যা সমস্ত নিখরচায়)

#!/bin/bash
diskusage=$(df -H | grep -vE '^Filesystem|tmpfs|cdrom|mmcblk0p1' | awk '{ print $5 " " $1 }'| cut -f1 -d '%')
hostname=$(hostname)
tolerance=(85)
date=$(date)

if [[ "$diskusage" -gt "$tolerance" ]]
        then
        echo ""
        echo total disk usage is $diskusage%
        echo ""
        curl -X POST -H "Content-Type: application/json" -d '{"value1":"--Alert--","value2":"Total disk usage is '$diskusage'% ","value3":"Host information: '$hostname' "}' https://maker.ifttt.com/trigger/{alert}/with/key/PutYourKeyHEre
fi
echo ''
echo Disk usage is $diskusage%. The tolerance is $tolerance%. No alert fired $date
echo Disk usage is $diskusage%. The tolerance is $tolerance%. No alert fired $date >> /var/log/IFTTT/checkdiskspace.log
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.