Scroll to navigation

inode(7) Miscellaneous Information Manual inode(7)

الاسم

inode - معلومات inode للملف

الوصف

لكل ملف inode يحتوي على بيانات وصفية حول الملف. يمكن للتطبيق استرداد هذه البيانات الوصفية باستخدام stat(2) (أو الاستدعاءات ذات الصلة)، والتي تعيد بنية stat، أو statx(2)، والتي تعيد بنية statx.

فيما يلي قائمة بالمعلومات التي توجد عادةً في inode للملف، أو ترتبط به، مع أسماء حقول البنية المقابلة التي تعيدها stat(2) و statx(2):

الجهاز الذي يقطنه الـ inode
stat.st_dev؛ statx.stx_dev_minor و statx.stx_dev_major
كل inode (بالإضافة إلى الملف المرتبط به) يقطن في نظام ملفات مُستضاف على جهاز. يُعرَّف هذا الجهاز من خلال الجمع بين معرّفه الرئيسي (الذي يحدد الفئة العامة للجهاز) والمعرّف الفرعي (الذي يحدد نسخة محددة في الفئة العامة).
رقم الـ inode
stat.st_ino؛ statx.stx_ino
كل ملف في نظام ملفات له رقم inode فريد. أرقام inode مضمونة لتكون فريدة فقط داخل نظام ملفات واحد (أي أن نفس أرقام inode قد تُستخدم بواسطة أنظمة ملفات مختلفة، وهذا هو السبب في أن الوصلات الصلبة لا يمكنها تجاوز حدود نظام الملفات). يحتوي هذا الحقل على رقم inode الخاص بالملف.
نوع الملف ووضعه
stat.st_mode؛ statx.stx_mode
انظر مناقشة نوع الملف ووضعه أدناه.
عدد الوصلات
stat.st_nlink؛ statx.stx_nlink
يحتوي هذا الحقل على عدد الوصلات الصلبة للملف. تُنشأ وصلات إضافية لملف موجود باستخدام link(2).
معرف المستخدم
stat.st_uid؛ statx.stx_uid
يسجل هذا الحقل معرّف المستخدم لمالك الملف. بالنسبة للملفات المنشأة حديثًا، يكون معرّف مستخدم الملف هو معرّف المستخدم الفعلي للعملية المنشئة. يمكن تغيير معرّف مستخدم ملف ما باستخدام chown(2).
معرف المجموعة
stat.st_gid؛ statx.stx_gid
يسجل الـ inode معرّف المجموعة المالكة للملف. بالنسبة للملفات المنشأة حديثًا، يكون معرّف مجموعة الملف إما معرّف مجموعة المجلد الأب أو معرّف المجموعة الفعلي للعملية المنشئة، اعتمادًا على ما إذا كانت بتّة set-group-ID مضبوطة على المجلد الأب أم لا (انظر أدناه). يمكن تغيير معرّف مجموعة ملف ما باستخدام chown(2).
الجهاز المُمثَّل بهذا الـ inode
stat.st_rdev؛ statx.stx_rdev_minor و statx.stx_rdev_major
إذا كان هذا الملف (inode) يمثل جهازًا، فإن الـ inode يسجل المعرّف الرئيسي والفرعي لذلك الجهاز.
حجم الملف
stat.st_size؛ statx.stx_size
يعطي هذا الحقل حجم الملف (إذا كان ملفًا عاديًا أو وصلة رمزية) بالبايت. حجم الوصلة الرمزية هو طول اسم المسار الذي تحتويه، بدون بايت العدم النهائي.
حجم الكتلة المفضل للإدخال/الإخراج
stat.st_blksize؛ statx.stx_blksize
يعطي هذا الحقل حجم الكتلة "المفضل" لعمليات إدخال/إخراج نظام الملفات الفعالة. (الكتابة إلى ملف في قطع أصغر قد تتسبب في عملية قراءة-تعديل-إعادة كتابة غير فعالة.)
عدد الكتل المخصصة للملف
stat.st_blocks؛ statx.stx_blocks
يشير هذا الحقل إلى عدد الكتل المخصصة للملف، بوحدات 512 بايت، (قد يكون هذا أصغر من st_size/512 عندما يحتوي الملف على فجوات).
تشير معايير POSIX.1 إلى أن وحدة عضو st_blocks في بنية stat غير محددة بواسطة المعيار. في العديد من التطبيقات تكون 512 بايت؛ وفي أنظمة قليلة، تُستخدم وحدة مختلفة، مثل 1024. علاوة على ذلك، قد تختلف الوحدة على أساس كل نظام ملفات.
طابع وقت آخر وصول (atime)
stat.st_atime؛ statx.stx_atime
هذا هو طابع وقت آخر وصول للملف. يتغير عند الوصول إلى الملف، على سبيل المثال، بواسطة execve(2)، و mknod(2)، و pipe(2)، و utime(2)، و read(2) (لأكثر من صفر بايت). قد تقوم واجهات أخرى، مثل mmap(2)، بتحديث طابع وقت atime أو لا.
تسمح بعض أنواع أنظمة الملفات بالوصل بطريقة لا تؤدي فيها عمليات الوصول إلى الملفات و/أو المجلدات إلى تحديث طابع وقت atime. (انظر noatime، و nodiratime، و relatime في mount(8)، والمعلومات ذات الصلة في mount(2).) بالإضافة إلى ذلك، لا يُحدَّث طابع وقت atime إذا فُتح الملف باستخدام علامة O_NOATIME؛ انظر open(2).
طابع وقت إنشاء (ميلاد) الملف (btime)
(لا يعاد في بنية statstatx.stx_btime
طابع وقت إنشاء الملف. يُضبط عند إنشاء الملف ولا يتغير بعد ذلك.
تاريخيًا، لم يكن طابع وقت btime موجودًا في أنظمة UNIX وهو غير مدعوم حاليًا من قبل معظم أنظمة ملفات لينكس.
طابع وقت آخر تعديل (mtime)
stat.st_mtime؛ statx.stx_mtime
هذا هو طابع وقت آخر تعديل للملف. يتغير عند تعديل الملف، على سبيل المثال، بواسطة mknod(2)، و truncate(2)، و utime(2)، و write(2) (لأكثر من صفر بايت). علاوة على ذلك، يتغير طابع وقت mtime للمجلد عند إنشاء أو حذف ملفات في ذلك المجلد. لا يتغير طابع وقت mtime عند حدوث تغييرات في المالك أو المجموعة أو عدد الوصلات الصلبة أو الوضع.
طابع وقت آخر تغيير للحالة (ctime)
stat.st_ctime؛ statx.stx_ctime
هذا هو طابع وقت آخر تغيير لحالة الملف. يتغير عند الكتابة أو عند ضبط معلومات inode (أي المالك، المجموعة، عدد الوصلات، الوضع، إلخ).

تُبلغ حقول طابع الوقت عن الوقت المقاس بنقطة صفر عند Epoch، 1970-01-01 00:00:00 +0000، بتوقيت UTC (انظر time(7)).

طوابع الوقت بالنانو ثانية مدعومة في XFS و JFS و Btrfs و ext4 (منذ لينكس 2.6.23). طوابع الوقت بالنانو ثانية غير مدعومة في ext2 و ext3 و Reiserfs. من أجل إعادة طوابع الوقت بدقة النانو ثانية، عُرّفت حقول طابع الوقت في بنيتي stat و statx كبنى تتضمن مكون نانو ثانية. انظر stat(2) و statx(2) للتفاصيل. في أنظمة الملفات التي لا تدعم طوابع الوقت لأجزاء من الثانية، تُعاد حقول النانو ثانية في بنيتي stat و statx بالقيمة 0.

نوع الملف ووضعه

يحتوي حقل stat.st_mode (وبالنسبة لـ statx(2)، حقل statx.stx_mode) على نوع الملف ووضعه.

تشير POSIX إلى بتّات stat.st_mode المقابلة للقناع S_IFMT (انظر أدناه) على أنها نوع الملف، والبتّات الـ 12 المقابلة للقناع 07777 على أنها بتّات وضع الملف والبتّات الـ 9 الأقل أهمية (0777) على أنها بتّات أذونات الملف.

قيم القناع التالية معرّفة لنوع الملف:

S_IFMT 0170000 قناع البت لحقل بت نوع الملف
S_IFSOCK 0140000 socket
S_IFLNK 0120000 وصلة رمزية
S_IFREG 0100000 ملف عادي
S_IFBLK 0060000 جهاز كتلي
S_IFDIR 0040000 مجلد
S_IFCHR 0020000 جهاز محرفي
S_IFIFO 0010000 FIFO

وبالتالي، لاختبار ما إذا كان الملف ملفًا عاديًا (على سبيل المثال)، يمكن للمرء أن يكتب:


stat(pathname, &sb);
if ((sb.st_mode & S_IFMT) == S_IFREG) {

/* تعامل مع ملف عادي */ }

نظرًا لأن الاختبارات بالشكل المذكور أعلاه شائعة، فقد عُرّفت وحدات ماكرو إضافية بواسطة POSIX للسماح بكتابة اختبار نوع الملف في st_mode بشكل أكثر إيجازًا:

هل هو ملف عادي؟
مجلد؟
جهاز محرفي؟
جهاز كتلي؟
FIFO (أنبوب مسمى)؟
وصلة رمزية؟ (ليست في POSIX.1-1996.)
مقبس؟ (ليس في POSIX.1-1996.)

وبالتالي يمكن إعادة كتابة قصاصة الكود السابقة لتكون:


stat(pathname, &sb);
if (S_ISREG(sb.st_mode)) {

/* التعامل مع ملف عادي */ }

تُوفّر تعريفات معظم وحدات ماكرو اختبار أنواع الملفات المذكورة أعلاه إذا عُرّف أي من وحدات ماكرو اختبار الميزات التالية: _BSD_SOURCE (في glibc 2.19 والإصدارات الأقدم)، أو _SVID_SOURCE (في glibc 2.19 والإصدارات الأقدم)، أو _DEFAULT_SOURCE (في glibc 2.20 والإصدارات الأحدث). بالإضافة إلى ذلك، تُوفّر تعريفات كافة وحدات الماكرو أعلاه باستثناء S_IFSOCK و S_ISSOCK() إذا عُرّفت _XOPEN_SOURCE.

يمكن أيضًا كشف تعريف S_IFSOCK إما بتعريف _XOPEN_SOURCE بقيمة 500 أو أكثر أو (منذ glibc 2.24) بتعريف كل من _XOPEN_SOURCE و _XOPEN_SOURCE_EXTENDED.

يُكشف تعريف S_ISSOCK() إذا عُرّف أي من وحدات ماكرو اختبار الميزات التالية: _BSD_SOURCE (في glibc 2.19 والإصدارات الأقدم)، أو _DEFAULT_SOURCE (في glibc 2.20 والإصدارات الأحدث)، أو _XOPEN_SOURCE بقيمة 500 أو أكثر، أو _POSIX_C_SOURCE بقيمة 200112L أو أكثر، أو (منذ glibc 2.24) بتعريف كل من _XOPEN_SOURCE و _XOPEN_SOURCE_EXTENDED.

قِيَم القناع التالية مُعرّفة لمكوّن وضع الملف في حقل st_mode:

S_ISUID 04000 بت تعيين معرف المستخدم (انظر execve(2))
S_ISGID 02000 بت تعيين معرف المجموعة (انظر أدناه)
S_ISVTX 01000 البت اللاصق (انظر أدناه)
S_IRWXU 00700 للمالك صلاحية القراءة، والكتابة، والتنفيذ
S_IRUSR 00400 للمالك صلاحية القراءة
S_IWUSR 00200 للمالك صلاحية الكتابة
S_IXUSR 00100 للمالك صلاحية التنفيذ
S_IRWXG 00070 للمجموعة صلاحية القراءة، والكتابة، والتنفيذ
S_IRGRP 00040 للمجموعة صلاحية القراءة
S_IWGRP 00020 للمجموعة صلاحية الكتابة
S_IXGRP 00010 للمجموعة صلاحية التنفيذ
S_IRWXO 00007 للآخرين (ليسوا في المجموعة) صلاحية القراءة، والكتابة، والتنفيذ
S_IROTH 00004 للآخرين صلاحية القراءة
S_IWOTH 00002 للآخرين صلاحية الكتابة
S_IXOTH 00001 للآخرين صلاحية التنفيذ

لبت تعيين معرف المجموعة (S_ISGID) استخدامات خاصة عديدة. بالنسبة إلى دليل، فإنه يشير إلى استخدام دلالات BSD لذلك الدليل: تَرث الملفات المنشأة هناك معرف المجموعة الخاص بها من الدليل، وليس من معرف المجموعة الفعال للعملية المنشئة، وستحصل الأدلة المنشأة هناك أيضًا على بت S_ISGID. بالنسبة لملف قابل للتنفيذ، يتسبب بت تعيين معرف المجموعة في تغيير معرف المجموعة الفعال للعملية التي تنفذ الملف كما هو موضح في execve(2). بالنسبة للملف الذي لا يحتوي على بت تنفيذ المجموعة (S_IXGRP)، فإن بت تعيين معرف المجموعة يشير إلى قفل إلزامي للملف/السجل.

البت اللاصق (S_ISVTX) على دليل يعني أن الملف الموجود في ذلك الدليل لا يمكن إعادة تسميته أو حذفه إلا بواسطة صاحب الملف، أو بواسطة صاحب الدليل، أو بواسطة عملية ذات امتيازات.

المعايير

POSIX.1-2008.

التاريخ

POSIX.1-2001.

لم يصف POSIX.1-1990 الثوابت S_IFMT و S_IFSOCK و S_IFLNK و S_IFREG و S_IFBLK و S_IFDIR و S_IFCHR و S_IFIFO و S_ISVTX، ولكنه حدد بدلاً من ذلك استخدام وحدات الماكرو S_ISDIR() وهكذا دواليك.

لم تكن وحدات الماكرو S_ISLNK() و S_ISSOCK() في POSIX.1-1996؛ الأولى من SVID 4، والثانية من SUSv2.

احتوى UNIX V7 (والأنظمة اللاحقة) على S_IREAD و S_IWRITE و S_IEXEC، وحيث تفرض POSIX المرادفات S_IRUSR و S_IWUSR و S_IXUSR.

ملاحظات

بالنسبة للملفات الوهمية التي تُولّد آليًا بواسطة النواة، فإن حجم الملف (stat.st_size؛ statx.stx_size) الذي تبلغ عنه النواة ليس دقيقًا. على سبيل المثال، تُعاد القيمة 0 للعديد من الملفات الموجودة تحت دليل /proc، بينما تبلغ ملفات مختلفة تحت /sys عن حجم قدره 4096 بايت، رغم أن محتوى الملف أصغر. لمثل هذه الملفات، ينبغي للمرء ببساطة محاولة قراءة أكبر عدد ممكن من البايتات (وإلحاق '\0' بالمنظم المُعاد إذا كان سيُفسّر كسلسلة نصية).

انظر أيضًا

stat(1), stat(2), statx(2), symlink(7)

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

8 فبراير 2026 صفحات دليل لينكس (لم تصدر بعد)