এলএস-এল এর পরে প্রথম লাইনে সেই "মোট" কী? [বন্ধ]


131

totalএর আউটপুট কি ls -l?

    $ ls -l /etc
    total 3344
    -rw-r--r--   1 root root   15276 Oct  5  2004 a2ps.cfg
    -rw-r--r--   1 root root    2562 Oct  5  2004 a2ps-site.cfg
    drwxr-xr-x   4 root root    4096 Feb  2  2007 acpi
    -rw-r--r--   1 root root      48 Feb  8  2008 adjtime
    drwxr-xr-x   4 root root    4096 Feb  2  2007 alchemist

উত্তর:


94

আপনি lsআপনার প্ল্যাটফর্মের জন্য ডকুমেন্টেশনে সেই লাইনের সংজ্ঞাটি খুঁজে পেতে পারেন । জন্য coreutils ls(লিনাক্সের সিস্টেম অনেক পাওয়া একটি), তথ্য মাধ্যমে পাওয়া যাবে info coreutils ls:

তালিকাভুক্ত প্রতিটি ডিরেক্টরিগুলির জন্য, ফাইলগুলিকে একটি লাইন 'মোট ব্লকস' দিয়ে প্রফেস করুন, যেখানে ব্লকগুলি সেই ডিরেক্টরিতে থাকা সমস্ত ফাইলের জন্য মোট ডিস্ক বরাদ্দ।


14
man lsআমার সিস্টেমে মজাদারভাবে যথেষ্ট পরিমাণে লাইনটি উল্লেখ করা হয়নি, তবে রয়েছে info coreutils ls। একই কমান্ড সম্পর্কে কীভাবে আসে man lsএবং info coreutils lsবিভিন্ন তথ্য থাকে? কেন lsশুধু একবার নথিভুক্ত করা হয় না ? একই কমান্ডের জন্য দুটি পৃথক নথিপত্র ব্যর্থতার জন্য সেট আপ করার মতো মনে হয়।
হ্যালো গুডবাই

1
infoম্যান পেজগুলির তুলনায় কোর্টিলস স্টাফের জন্য ডকগুলি প্রায়শই বিশদভাবে থাকে। এই কারণেই প্রতিটি বিশদ পৃষ্ঠার শেষে তাদের কাছে একটি নোট রয়েছে যা আপনাকে আরও বিশদের জন্য তথ্য বিভাগে উল্লেখ করে।
মাদুর

7
আহ। আমি এক্সিকিউট করেছি info lsএবং এটি হিসাবে একই আউটপুট দিতে info coreutils ls। যুক্তি কী করে coreutils?
হ্যালো গুডবাই

46

সূত্র: সেই সংখ্যাটি কী ?

মোট ইনট = প্রতিটি ফাইলের জন্য (শারীরিক_ব্লক_স_ইউজ) * শারীরিক_ব্লক_সাইজ / এলএস_ব্লক_সাইজ) এর যোগফল ।

কোথায়:

  • ls_block_sizeএকটি স্বেচ্ছাসেবী পরিবেশ পরিবর্তনশীল (সাধারণত 512 বা 1024 বাইট) যা --block-size=<int>পতাকা ls, POSIXLY_CORRECT=1জিএনইউ এনভায়রনমেন্ট ভেরিয়েবল (512-বাইট ইউনিট পেতে), বা -kপতাকাটি 1 কেবি ইউনিট জোর করে মুক্তভাবে পরিবর্তনযোগ্য।
  • physical_block_sizeকোনও অভ্যন্তরীণ ব্লক ইন্টারফেসের ওএস নির্ভর মান, যা অন্তর্নিহিত হার্ডওয়্যারের সাথে সংযুক্ত থাকতে পারে বা নাও পারে। এই মানটি সাধারণত 512 বি বা 1 কে হয় তবে এটি ওএসের উপর সম্পূর্ণ নির্ভর করে। এটি %Bমান statবা এর মাধ্যমে প্রকাশ করা যেতে পারে fstatনোট করুন যে এই মানটি (প্রায় সর্বদা) একটি আধুনিক স্টোরেজ ডিভাইসে শারীরিক ব্লকের সংখ্যার সাথে সম্পর্কিত নয় ।

এত বিভ্রান্তিকর কেন?

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

"ব্লক সাইজ" শব্দের অসন্তুষ্টি এবং অস্পষ্টতা বিভিন্ন বিভিন্ন পদক্ষেপ সহজেই বিভ্রান্ত হওয়ার ফলে এবং ডিস্ক অ্যাক্সেসের চারপাশে ঘোরাফেরার তুলনামূলকভাবে গভীর স্তরের ফলাফল।

বিরোধী তথ্যের উদাহরণ: du(বা ls -s) বনামstat

du *একটি প্রকল্প ফোল্ডারে চলমান নিম্নলিখিত ফল দেয়: (দ্রষ্টব্য: ls -sএকই ফলাফল ফেরত দেয়)

dactyl:~/p% du *
2       check.cc
2       check.h
1       DONE
3       Makefile
3       memory.cc
5       memory.h
26      p2
4       p2.cc
2       stack.cc
14      stack.h

মোট : 2 + 2 + 1 + 3 + 3 + 5 + 26 + 4 + 2 + 14 = 62 ব্লক

তবুও যখন একটি রান করে statআমরা মানগুলির একটি আলাদা সেট দেখতে পাই। statএকই ডিরেক্টরিতে চলছে ফলন:

dactyl:~/p% stat * --printf="%b\t(%B)\t%n: %s bytes\n"
3       (512)   check.cc: 221 bytes
3       (512)   check.h: 221 bytes
1       (512)   DONE: 0 bytes
5       (512)   Makefile: 980 bytes
6       (512)   memory.cc: 2069 bytes
10      (512)   memory.h: 4219 bytes
51      (512)   p2: 24884 bytes
8       (512)   p2.cc: 2586 bytes
3       (512)   stack.cc: 334 bytes
28      (512)   stack.h: 13028 bytes

মোট: 3 + 3 + 1 + 5 + 6 + 10 + 51 + 8 + 3 + 28 = 118 ব্লক

দ্রষ্টব্য: আপনি কমান্ডটি stat * --printf="%b\t(%B)\t%n: %s bytes\n"> আউটপুট করতে (ক্রমানুসারে) ব্লকের সংখ্যা, (প্যারেন্সে) সেই ব্লকের আকার, ফাইলের নাম এবং বাইট আকারে উপরের মতো দেখতে পারেন।

দুটি গুরুত্বপূর্ণ জিনিস গ্রহণের পথে আছে:

  • statউপরের সূত্রে ব্যবহৃত physical_blocks_in_useএবং physical_block_sizeহিসাবে উভয়ই রিপোর্ট করে । নোট করুন যে এগুলি ওএস ইন্টারফেসের উপর ভিত্তি করে মান।
  • duযা শারীরিক ডিস্ক ব্যবহারের মোটামুটি সঠিক অনুমান হিসাবে সাধারণত গৃহীত হয় তা সরবরাহ করে ।

রেফারেন্সের জন্য, এখানে ls -lউপরে ডিরেক্টরিটির ডিরেক্টরি রয়েছে:

dactyl:~/p% ls -l
**total 59**
-rw-r--r--. 1 dhs217 grad   221 Oct 16  2013 check.cc
-rw-r--r--. 1 dhs217 grad   221 Oct 16  2013 check.h
-rw-r--r--. 1 dhs217 grad     0 Oct 16  2013 DONE
-rw-r--r--. 1 dhs217 grad   980 Oct 16  2013 Makefile
-rw-r--r--. 1 dhs217 grad  2069 Oct 16  2013 memory.cc
-rw-r--r--. 1 dhs217 grad  4219 Oct 16  2013 memory.h
-rwxr-xr-x. 1 dhs217 grad 24884 Oct 18  2013 p2
-rw-r--r--. 1 dhs217 grad  2586 Oct 16  2013 p2.cc
-rw-r--r--. 1 dhs217 grad   334 Oct 16  2013 stack.cc
-rw-r--r--. 1 dhs217 grad 13028 Oct 16  2013 stack.h

26

তালিকাভুক্ত ফাইলগুলি দ্বারা অপ্রত্যক্ষ ব্লকগুলি সহ মোট ফাইল সিস্টেম ব্লকের সংখ্যা number আপনি যদি ls -sএকই ফাইলগুলিতে চালিত হন এবং প্রতিবেদন করা সংখ্যাগুলি যোগ করেন তবে আপনি একই নম্বর পাবেন।


এটা পুরাপুরিভাবে সত্য নয়। উদাহরণ: /bin/ls -s-> total 15 2 filename 3 filename2 3 filename3 3 filename4 2 filename5 2 filename6 2 filename8 2 filename9
ডোন স্কট

3
আমি আপনি কি সিস্টেমে জানি না, কিন্তু আমার কাছে, এটা হল সত্য। উদাহরণ: gist.github.com/rfjakob/200f6001bf91cf801891
Jakob

@ জ্যাকব একটি সম্পূর্ণ উত্তর পোস্ট করেছেন, একবার দেখুন এবং এটি যদি এটি পরিষ্কার হয়ে যায় তবে আমাকে জানান।
ডন স্কট

উইন্ডোজের জন্য গিট ব্যাশে এটি সত্য নয়।
'45

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.