كيفية استخدام الأمر stat على لينكس

نشرت: 2022-01-29
محطة Linux على سطح مكتب بنمط Ubuntu.
فاطماواتي أحمد زينوري / Shutterstock.com

يعرض لك أمر Linux stat تفاصيل أكثر بكثير من ls . ألق نظرة خاطفة خلف الستارة باستخدام هذه الأداة المفيدة والتكوينية. سنوضح لك كيفية استخدامه.

القانون الأساسي يأخذك وراء الكواليس

يعتبر الأمر ls رائعًا في ما يفعله - ويفعل الكثير - ولكن مع Linux ، يبدو أن هناك دائمًا طريقة للتعمق أكثر ومعرفة ما يكمن تحت السطح. وغالبًا ، لا يتعلق الأمر برفع حافة السجادة فقط. يمكنك تمزيق ألواح الأرضية ثم حفر حفرة. يمكنك تقشير لينكس مثل البصل.

10 أوامر لينكس أساسية للمبتدئين
ذات صلة 10 أوامر لينكس أساسية للمبتدئين

سيُظهر لك ls قدرًا كبيرًا من المعلومات حول ملف ، مثل الأذونات التي تم تعيينها عليه ، ومدى حجمه ، وما إذا كان ملفًا أم ارتباطًا رمزيًا. لعرض هذه المعلومات ، يقوم ls بقراءتها من بنية نظام ملفات تسمى inode.

يحتوي كل ملف ودليل على inode. يحتوي inode على بيانات أولية حول الملف ، مثل كتل نظام الملفات التي يشغلها ، وطوابع التاريخ المرتبطة بالملف. إنود ​​هو مثل بطاقة مكتبة للملف. لكن ls سيُظهر لك فقط بعض المعلومات. لرؤية كل شيء ، نحتاج إلى استخدام الأمر stat .

مثل ls ، يحتوي الأمر stat على الكثير من الخيارات. هذا يجعلها مرشحًا رائعًا لاستخدام الأسماء المستعارة. بمجرد أن تكتشف مجموعة معينة من الخيارات التي تجعل stat تمنحك المخرجات التي تريدها ، قم بلفها في اسم مستعار أو دالة shell. هذا يجعله أكثر ملاءمة للاستخدام ، ولا يتعين عليك تذكر مجموعة غامضة من خيارات سطر الأوامر.

ذات صلة: كيفية استخدام الأمر ls لسرد الملفات والدلائل على Linux

مقارنة سريعة

دعنا نستخدم ls لتزويدنا بقائمة طويلة (الخيار -l ) بأحجام ملفات يمكن قراءتها من قبل الإنسان (خيار -h ):

 ls -lh ana.h 

الإعلانات

من اليسار إلى اليمين ، المعلومات التي توفرها ls هي:

  • الحرف الأول هو الواصلة "-" وهذا يخبرنا أن الملف هو ملف عادي وليس مأخذ توصيل أو رابط رمزي أو أي نوع آخر من الكائنات.
  • يتم سرد المالك والمجموعة والأذونات الأخرى بتنسيق ثماني.
  • عدد الروابط الصلبة التي تشير إلى هذا الملف. في هذه الحالة ، وفي معظم الحالات ، ستكون واحدة.
  • مالك الملف هو ديف.
  • مالك المجموعة هو ديف.
  • حجم الملف 802 بايت.
  • تم تعديل الملف آخر مرة يوم الجمعة 13 ديسمبر 2015.
  • اسم الملف هو ana.c

دعنا نلقي نظرة على stat :

 stat ana.h 

المعلومات التي نحصل عليها من stat هي:

  • الملف : اسم الملف. عادةً ما يكون هو نفس الاسم الذي مررناه إلى stat في سطر الأوامر ، ولكن يمكن أن يكون مختلفًا إذا نظرنا إلى ارتباط رمزي.
  • الحجم : حجم الملف بالبايت.
  • الكتل : عدد كتل نظام الملفات التي يتطلبها الملف ، حتى يتم تخزينه على القرص الصلب.
  • IO Block : حجم كتلة نظام الملفات.
  • نوع الملف : نوع الكائن الذي تصفه البيانات الوصفية. الأنواع الأكثر شيوعًا هي الملفات والأدلة ، ولكن يمكن أيضًا أن تكون روابط أو مآخذ توصيل أو أنابيب مسماة.
  • الجهاز : رقم الجهاز بالنظام الست عشري والعشري. هذا هو معرف القرص الصلب الذي تم تخزين الملف عليه.
  • Inode : رقم inode. وهذا هو ، رقم معرف هذا inode. يعمل رقم inode ورقم الجهاز معًا على تحديد الملف بشكل فريد.
  • الروابط : يشير هذا الرقم إلى عدد الروابط الثابتة التي تشير إلى هذا الملف. كل رابط صلب له inode خاص به. هناك طريقة أخرى للتفكير في هذا الرقم وهي عدد inodes التي تشير إلى هذا الملف الواحد. في كل مرة يتم فيها إنشاء ارتباط صلب أو حذفه ، سيتم تعديل هذا الرقم لأعلى أو لأسفل. عندما يصل إلى الصفر ، يتم حذف الملف نفسه وإزالة inode. إذا كنت تستخدم stat في دليل ، فإن هذا الرقم يمثل عدد الملفات في الدليل ، بما في ذلك "." إدخال للدليل الحالي وإدخال ".." للدليل الأصل.
  • الوصول : تظهر أذونات الملفات في rwx الثماني والتقليدي (تنسيقات القراءة والكتابة والتنفيذ).
  • Uid : معرف المستخدم واسم حساب المالك.
  • Gid : معرف المجموعة واسم حساب المالك.
  • الوصول : الطابع الزمني للوصول. ليس مباشرًا كما قد يبدو. تستخدم توزيعات Linux الحديثة مخططًا يسمى relatime ، والذي يحاول تحسين عمليات الكتابة على القرص الصلب المطلوبة لتحديث وقت الوصول. ببساطة ، يتم تحديث وقت الوصول إذا كان أقدم من الوقت المعدل.
  • تعديل : الطابع الزمني للتعديل. هذا هو الوقت الذي تم فيه آخر تعديل لمحتويات الملف. (لحسن الحظ ، تم تغيير محتويات هذا الملف آخر مرة منذ أربع سنوات حتى يومنا هذا.)
  • تغيير : الطابع الزمني للتغيير. هذه هي المرة الأخيرة التي تم فيها تغيير سمات الملف أو محتوياته . إذا قمت بتعديل ملف عن طريق تعيين أذونات ملف جديدة ، فسيتم تحديث الطابع الزمني للتغيير (لأن سمات الملف قد تغيرت) ، لكن الطابع الزمني المعدل لن يتم تحديثه (لأن محتويات الملف لم تتغير).
  • الميلاد : محجوز لإظهار تاريخ الإنشاء الأصلي للملف ، لكن هذا لم يتم تنفيذه في Linux.

فهم الطوابع الزمنية

الطوابع الزمنية حساسة للمنطقة الزمنية. يوضح الرقم -0500 في نهاية كل سطر أن هذا الملف قد تم إنشاؤه على جهاز كمبيوتر في منطقة زمنية بتوقيت عالمي (UTC) تسبق المنطقة الزمنية للكمبيوتر الحالي بخمس ساعات. إذن هذا الكمبيوتر متأخر بخمس ساعات عن الكمبيوتر الذي أنشأ هذا الملف. في الواقع ، تم إنشاء الملف على كمبيوتر منطقة زمنية في المملكة المتحدة ، ونحن ننظر إليه هنا على جهاز كمبيوتر في المنطقة الزمنية الشرقية للولايات المتحدة.

يمكن أن يتسبب تعديل الطوابع الزمنية وتغييرها في حدوث ارتباك لأن أسماءهم تبدو بالنسبة للمبتدئين كما لو كانت تعني نفس الشيء.

لنستخدم chmod لتعديل أذونات الملف في ملف يسمى ana.c سنجعله قابلاً للكتابة من قبل الجميع. لن يؤثر ذلك على محتويات الملف ، لكنه سيؤثر على سمات الملف.

 chmod + w ana.c

وبعد ذلك سنستخدم stat للنظر في الطوابع الزمنية:

 احصائيات ana.c 

الإعلانات

تم تحديث الطابع الزمني للتغيير ، لكن لم يتم تحديث الطابع المعدل.

سيتم تحديث الطابع الزمني المعدل فقط إذا تم تغيير محتويات الملف. يتم تحديث الطابع الزمني للتغيير لكل من تغييرات المحتوى وتغييرات السمات.

استخدام Stat مع ملفات متعددة

للحصول على تقرير إحصائي عن عدة ملفات في آنٍ واحد ، مرر أسماء الملفات إلى stat في سطر الأوامر:

 stat ana.h ana.o 

لاستخدام stat على مجموعة من الملفات ، استخدم مطابقة الأنماط. علامة الاستفهام "؟" تمثل أي حرف مفرد ، وتمثل العلامة النجمية "*" أي سلسلة من الأحرف. يمكننا إخبار stat بالإبلاغ عن أي ملف يسمى "ana" بامتداد حرف واحد ، باستخدام هذا الأمر:

 stat ana.؟ 

استخدام الإحصائيات للإبلاغ عن أنظمة الملفات

يمكن لـ stat الإبلاغ عن حالة أنظمة الملفات ، بالإضافة إلى حالة الملفات. يقوم الخيار -f (نظام الملفات) بإخبار stat للإبلاغ عن نظام الملفات الذي يوجد عليه الملف. لاحظ أنه يمكننا أيضًا تمرير دليل مثل "/" إلى stat بدلاً من اسم الملف.

 stat -f ana.c 

stat المعلومات التي يقدمها لنا هي:

  • الملف : اسم الملف.
  • المعرّف : معرّف نظام الملفات بالتدوين السداسي العشري.
  • Namelen : أقصى طول مسموح به لأسماء الملفات.
  • النوع : نوع نظام الملفات.
  • حجم الكتلة : مقدار البيانات المطلوب طلب قراءة طلبات لمعدلات نقل البيانات المثلى.
  • حجم الكتلة الأساسي : حجم كل كتلة نظام ملفات.

كتل:

  • الإجمالي : العدد الإجمالي لجميع الكتل في نظام الملفات.
  • مجاني : عدد الكتل المجانية في نظام الملفات.
  • متاح : عدد الكتل المجانية المتاحة للمستخدمين العاديين (غير الجذر).

Inodes:

  • الإجمالي : إجمالي عدد inodes في نظام الملفات.
  • مجاني : عدد inodes المجانية في نظام الملفات.

إلغاء الإشارة إلى الروابط الرمزية

إذا كنت تستخدم stat على ملف يمثل ارتباطًا رمزيًا بالفعل ، فسيتم إرسال تقرير على الرابط. إذا كنت تريد من stat أن تبلغ عن الملف الذي يشير إليه الرابط ، فاستخدم الخيار -L (dereference). يعد ملف code.c ارتباطًا رمزيًا بـ ana.c لنلق نظرة عليها بدون الخيار -L :

 كود القانون الأساسي ج 

الإعلانات

يظهر اسم الملف code.c مشيرًا إلى ( -> ) ana.c حجم الملف 11 بايت فقط. لا توجد كتل مخصصة لتخزين هذا الارتباط. يتم سرد نوع الملف كارتباط رمزي.

من الواضح أننا لا ننظر إلى الملف الفعلي هنا. لنفعل ذلك مرة أخرى ونضيف الخيار -L :

 stat -L code.c 

هذا يعرض الآن تفاصيل الملف للملف المشار إليه بالارتباط الرمزي. لكن لاحظ أن اسم الملف لا يزال يُعطى كـ code.c هذا هو اسم الارتباط وليس الملف الهدف. يحدث هذا لأن هذا هو الاسم الذي مررناه إلى stat في سطر الأوامر.

تقرير مقتضب

يتسبب الخيار -t (مقتضب) في أن توفر stat ملخصًا مكثفًا:

 stat -t ana.c 

لا توجد أدلة معينة. لفهمها - حتى تحفظ تسلسل الحقل - تحتاج إلى إحالة هذا الناتج إلى ناتج stat كامل.

تنسيقات الإخراج المخصصة

أفضل طريقة للحصول على مجموعة مختلفة من البيانات من stat هو استخدام تنسيق مخصص. توجد قائمة طويلة من الرموز المميزة تسمى تسلسلات التنسيق. كل من هؤلاء يمثل عنصر بيانات. حدد العناصر التي تريد تضمينها في الإخراج وإنشاء سلسلة تنسيق. عندما stat سلسلة التنسيق إليها ، فإن المخرجات ستشمل فقط عناصر البيانات التي طلبناها.

الإعلانات

هناك مجموعات مختلفة من تسلسلات التنسيق للملفات وأنظمة الملفات. قائمة الملفات هي:

  • ٪ a : حقوق الوصول بالنظام الثماني.
  • ٪ أ : حقوق الوصول في شكل يمكن قراءته من قبل الإنسان ( rwx ).
  • ٪ b : عدد الكتل المخصصة.
  • ٪ B : الحجم بالبايت لكل كتلة.
  • ٪ d : رقم الجهاز بالتدوين العشري.
  • ٪ D : رقم الجهاز بالنظام الست عشري.
  • ٪ f : الوضع الأولي بالنظام الست عشري.
  • ٪ F نوع الملف.
  • ٪ g : معرف مجموعة المالك.
  • ٪ G : اسم المجموعة للمالك.
  • ٪ h : عدد الروابط الثابتة.
  • ٪ i : رقم الإدخال.
  • ٪ m : نقطة التحميل.
  • ٪ n : اسم الملف.
  • ٪ N : اسم الملف المقتبس ، مع اسم ملف غير مرجعي إذا كان ارتباطًا رمزيًا.
  • ٪ o : تلميح حجم نقل الإدخال / الإخراج الأمثل.
  • ٪ s : الحجم الإجمالي بالبايت.
  • ٪ t : نوع الجهاز الرئيسي بالنظام السداسي ، للملفات الخاصة بجهاز الأحرف / الكتلة.
  • ٪ T : نوع الجهاز الثانوي بالنظام السداسي ، للملفات الخاصة بجهاز الأحرف / الكتلة.
  • ٪ u : معرف المستخدم للمالك.
  • ٪ U : اسم المستخدم للمالك.
  • ٪ w : وقت ميلاد الملف أو القراءة البشرية أو الواصلة "-" إذا لم يكن معروفًا.
  • ٪ W : وقت ولادة الملف ، عدد الثواني منذ الحقبة ؛ 0 إذا كان غير معروف.
  • ٪ x : وقت آخر وصول يمكن للمستخدم قراءته.
  • ٪ X : وقت آخر وصول ، عدد الثواني منذ الحقبة.
  • ٪ y : وقت آخر تعديل للبيانات ، بحيث يمكن للمستخدم قراءته.
  • ٪ Y : وقت آخر تعديل للبيانات ، عدد الثواني منذ الحقبة.
  • ٪ z : وقت آخر تغيير للحالة ، يمكن للمستخدم قراءته.
  • ٪ Z : وقت آخر تغيير للحالة ، عدد الثواني منذ الحقبة.

"الحقبة" هي عصر Unix ، والتي حدثت في 1970-01-01 00:00:00 +0000 (UTC).

بالنسبة لأنظمة الملفات ، فإن تسلسلات التنسيق هي:

  • ٪ أ : عدد الكتل المجانية المتاحة للمستخدمين العاديين (غير الجذر).
  • ٪ b : إجمالي كتل البيانات في نظام الملفات.
  • ٪ c : إجمالي inodes في نظام الملفات.
  • ٪ d : عدد inodes المجانية في نظام الملفات.
  • ٪ f : عدد الكتل الحرة في نظام الملفات.
  • ٪ i : معرف نظام الملفات بالنظام الست عشري.
  • ٪ l : أقصى طول لأسماء الملفات.
  • ٪ n : اسم الملف.
  • ٪ s : حجم الكتلة (الحجم الأمثل للكتابة).
  • ٪ S : حجم كتل نظام الملفات (لعدد الكتل).
  • ٪ t : نوع نظام الملفات بالنظام الست عشري.
  • ٪ T : نوع نظام الملفات في شكل يمكن للبشر قراءته.

هناك خياران يقبلان سلاسل من تسلسلات التنسيق. هذه هي --format و --printf . الفرق بينهما هو --printf يفسر تسلسل هروب النمط C مثل newline \n و tab \t ، ولا يضيف تلقائيًا حرف سطر جديد إلى مخرجاته.

دعونا ننشئ سلسلة تنسيق ونمررها إلى stat . تسلسلات التنسيق التي كانت ستستخدم هي %n لاسم الملف و %s لحجم الملف و %F لنوع الملف. سنقوم بإضافة \n تسلسل الهروب إلى نهاية السلسلة للتأكد من معالجة كل ملف في سطر جديد. تبدو سلسلة التنسيق الخاصة بنا كما يلي:

 "الملف٪ n هو٪ s بايت ، وهو٪ F \ n"

سنقوم بتمرير هذا إلى stat باستخدام الخيار --printf . سنطلب من stat للإبلاغ عن ملف يسمى code.c ومجموعة من الملفات التي تطابق ana.? . هذا هو الأمر الكامل. لاحظ علامة يساوي " = " بين --printf وسلسلة التنسيق:

 stat --printf = "الملف٪ n هو٪ s بايت ، وهو٪ F \ n" code.c ana / ana.؟ 

يتم سرد التقرير الخاص بكل ملف في سطر جديد ، وهو ما طلبناه. يتم توفير اسم الملف وحجم الملف ونوع الملف بالنسبة لنا.

الإعلانات

تمنحك التنسيقات المخصصة الوصول إلى عناصر بيانات أكثر مما تم تضمينه في إخراج stat القياسي.

مراقبة الحبوب الدقيقة

كما ترى ، هناك مجال هائل لاستخراج عناصر البيانات المعينة التي تهمك. ربما يمكنك أيضًا معرفة سبب اقتراحنا باستخدام الأسماء المستعارة للتعاويذ الأطول والأكثر تعقيدًا.

ذات صلة: أفضل أجهزة كمبيوتر Linux المحمولة للمطورين والمتحمسين