الأخبار التكنولوجية والاستعراضات والنصائح!

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

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

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

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

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

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

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

مقارنة سريعة

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

ls -lh ana.h

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

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

دعنا نلقي نظرة على الإحصائيات:

الدولة ana.h

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

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

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

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

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

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

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

chmod + w ana.c

ثم نستخدم الإحصائيات للنظر في الطوابع الزمنية:

الدولة ana.c

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

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

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

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

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

الدولة ana.h ana.o

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

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

الدولة آنا.؟

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

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

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

الدولة -f ana.c

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

إحصاءات المعلومات التي تقدمها لنا هي:

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

مانع:

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

Inodes:

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

إزالة الروابط الرمزية

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

كود الدولة ج

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

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

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

الدولة -L code.c

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

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

تقرير مقتضب

يتسبب الخيار -t (مقتضب) في أن توفر الإحصائيات ملخصًا مضغوطًا:

الدولة -t ana.c

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

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

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

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

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

٪ a: حقوق الوصول بالنظام الثماني.٪ 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: وقت آخر تغيير للحالة ، عدد الثواني منذ الحقبة.

“Epoch” هي حقبة Unix التي حدثت في 1970-01-01 00:00:00 +0000 (UTC).

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

٪ a: عدد الكتل المجانية المتاحة للمستخدمين العاديين (غير الجذر).٪ 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 بايت ، وهو٪ Fn”

سنرسل هذا إلى stat مع خيار –printf. سنطلب من stat للإبلاغ عن ملف يسمى code.c ومجموعة من الملفات التي تطابق ana.؟. هذا هو الأمر برمته. لاحظ علامة المساواة “=” بين –printf وسلسلة التنسيق:

stat –printf = “الملف٪ n هو٪ s بايت ، وهو رمز٪ Fn” ana / ana.؟

حالة --printf =

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

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

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

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