acct(5)

الاسم
acct - ملف محاسبة العمليات

موجز
#include <sys/acct.h>

الوصف
إذا بُني النواة مع تفعيل خيار محاسبة العمليات (CONFIG_BSD_PROCESS_ACCT)، فإن استدعاء acct(2) يبدأ محاسبة العمليات، على سبيل المثال:

acct("/var/log/pacct");

عند تفعيل محاسبة العمليات، يكتب النواة سجلاً إلى ملف المحاسبة عند إنهاء كل عملية في النظام. يحتوي هذا السجل على معلومات حول العملية المنتهية، ويُعرف في <sys/acct.h> كما يلي:

    #define ACCT_COMM 16

    typedef u_int16_t comp_t;

    struct acct {
          char ac_flag;                 /* أعلام المحاسبة */
          u_int16_t ac_uid;           /* معرف مستخدم المحاسبة */
          u_int16_t ac_gid;           /* معرف مجموعة المحاسبة */
          u_int16_t ac_tty;           /* مبذل التحكم */
          u_int32_t ac_btime;       /* وقت إنشاء العملية
                                                   (بالثواني منذ الحقبة UNIX Epoch) */
          comp_t      ac_utime;        /* وقت المعالج الخاص بالمستخدم */
          comp_t      ac_stime;        /* وقت المعالج الخاص بالنظام */
          comp_t      ac_etime;        /* الوقت المنقضي */
          comp_t      ac_mem;           /* متوسط استخدام الذاكرة (كيلوبايت) */
          comp_t      ac_io;            /* المحارف المنقولة (غير مستخدم) */
          comp_t      ac_rw;            /* الكتل المقروءة أو المكتوبة (غير مستخدم) */
          comp_t      ac_minflt;      /* أخطاء الصفحة الطفيفة */
          comp_t      ac_majflt;      /* أخطاء الصفحة الكبيرة */
          comp_t      ac_swaps;        /* عدد عمليات التبديل (غير مستخدم) */
          u_int32_t ac_exitcode;  /* حالة إنهاء العملية
                                                   (انظر wait(2)) */
          char         ac_comm[ACCT_COMM+1];
                                              /* اسم الأمر (الاسم الأساسي لآخر
                                                   أمر نُفّذ؛ منتهي بمحرف صفري) */
          char         ac_pad[X];      /* بايتات الحشو */
    };

    enum {               /* البتات التي يمكن تعيينها في حقل ac_flag */
          AFORK = 0x01,                 /* نفّذ التفرع fork، ولكن لم ينفّذ exec */
          ASU     = 0x02,                 /* استخدم صلاحيات المستخدم الجذر */
          ACORE = 0x08,                 /* أفرغ الذاكرة Dumped core */
          AXSIG = 0x10                  /* قُتل بواسطة إشارة */
    };

نوع البيانات comp_t هو قيمة فاصلة عائمة تتكون من أس ذو 3 بتات، أساس 8، وجزء عشري ذو 13 بتًا. يمكن تحويل قيمة، c، من هذا النوع إلى عدد صحيح (طويل) كما يلي:

    v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3);

تقيس الحقول ac_utime و ac_stime و ac_etime الوقت بـ "نقرات الساعة"؛ اقسم هذه القيم على sysconf(_SC_CLK_TCK) لتحويلها إلى ثوانٍ.

  تنسيق ملف المحاسبة الإصدار 3
منذ لينكس 2.6.8، يمكن إنتاج نسخة بديلة اختيارية من ملف المحاسبة إذا ضُبط الخيار CONFIG_BSD_PROCESS_ACCT_V3 عند بناء النواة. مع ضبط هذا الخيار، تحتوي السجلات المكتوبة إلى ملف المحاسبة على حقول إضافية، ويوسع عرض حقلي c_uid و ac_gid من 16 إلى 32 بتًا (تماشيًا مع زيادة حجم UID و GID في لينكس 2.4 وما بعده). تُعرف السجلات كما يلي:

    struct acct_v3 {
        char      ac_flag;      /* الأعلام */
        char      ac_version;   /* يُضبط دائمًا على ACCT_VERSION (3) */
        u_int16_t ac_tty;       /* الطرفية المسيطرة */
        u_int32_t ac_exitcode;  /* حالة إنهاء العملية */
        u_int32_t ac_uid;       /* معرف المستخدم الحقيقي */
        u_int32_t ac_gid;       /* معرف المجموعة الحقيقي */
        u_int32_t ac_pid;       /* معرف العملية */
        u_int32_t ac_ppid;      /* معرف العملية الأم */
        u_int32_t ac_btime;     /* وقت إنشاء العملية */
        float     ac_etime;     /* الوقت المنقضي */
        comp_t    ac_utime;     /* وقت وحدة المعالجة المركزية للمستخدم */
        comp_t    ac_stime;     /* وقت النظام */
        comp_t    ac_mem;       /* متوسط استخدام الذاكرة (كيلوبايت) */
        comp_t    ac_io;        /* الأحرف المنقولة (غير مستخدم) */
        comp_t    ac_rw;        /* الكتل المقروءة أو المكتوبة
                                   (غير مستخدم) */
        comp_t    ac_minflt;    /* أخطاء الصفحات الصغرى */
        comp_t    ac_majflt;    /* أخطاء الصفحات الكبرى */
        comp_t    ac_swaps;     /* عدد المبادلات (غير مستخدم) */
        char      ac_comm[ACCT_COMM]; /* اسم الأمر */
    };

الإصدارات
على الرغم من وجوده في معظم الأنظمة، إلا أنه غير معياري، وتختلف التفاصيل قليلاً بين الأنظمة.

المعايير
لا يوجد.

التاريخ
glibc 2.6.

نشأت محاسبة العمليات في BSD.

ملاحظات
تُرتب السجلات في ملف المحاسبة حسب وقت إنهاء العملية.

حتى لينكس 2.6.9 وما يشملها، يُكتب سجل محاسبة منفصل لكل خيط يُنشأ باستخدام مكتبة الخيوط NPTL؛ منذ لينكس 2.6.10، يُكتب سجل محاسبة واحد للعملية بأكملها عند إنهاء آخر خيط في العملية.

يحدد الملف /proc/sys/kernel/acct، الموصوف في proc(5)، الإعدادات التي تتحكم في سلوك محاسبة العمليات عندما تنخفض مساحة القرص.

انظر أيضًا
lastcomm(1), acct(2), accton(8), sa(8)

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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