man-pages/man5/acct.5.html
2021-03-31 01:06:50 +01:00

244 lines
11 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><TITLE>Man page of ACCT</TITLE>
</HEAD><BODY>
<H1>ACCT</H1>
Section: Linux Programmer's Manual (5)<BR>Updated: 2017-09-15<BR><A HREF="#index">Index</A>
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>
acct - process accounting file
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSIS</H2>
<B>#include &lt;<A HREF="file:///usr/include/sys/acct.h">sys/acct.h</A>&gt;</B>
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>
If the kernel is built with the process accounting option enabled
(<B>CONFIG_BSD_PROCESS_ACCT</B>),
then calling
<B><A HREF="/cgi-bin/man/man2html?2+acct">acct</A></B>(2)
starts process accounting, for example:
<P>
acct(&quot;/var/log/pacct&quot;);
<P>
When process accounting is enabled, the kernel writes a record
to the accounting file as each process on the system terminates.
This record contains information about the terminated process,
and is defined in
<I>&lt;<A HREF="file:///usr/include/sys/acct.h">sys/acct.h</A>&gt;</I>
as follows:
<P>
#define ACCT_COMM 16
<P>
typedef u_int16_t comp_t;
<P>
struct acct {
<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;ac_flag;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Accounting&nbsp;flags&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;ac_uid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Accounting&nbsp;user&nbsp;ID&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;ac_gid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Accounting&nbsp;group&nbsp;ID&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;ac_tty;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Controlling&nbsp;terminal&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ac_btime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Process&nbsp;creation&nbsp;time
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(seconds&nbsp;since&nbsp;the&nbsp;Epoch)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_utime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;User&nbsp;CPU&nbsp;time&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_stime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;System&nbsp;CPU&nbsp;time&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_etime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Elapsed&nbsp;time&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_mem;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Average&nbsp;memory&nbsp;usage&nbsp;(kB)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_io;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Characters&nbsp;transferred&nbsp;(unused)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_rw;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Blocks&nbsp;read&nbsp;or&nbsp;written&nbsp;(unused)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_minflt;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Minor&nbsp;page&nbsp;faults&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_majflt;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Major&nbsp;page&nbsp;faults&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_swaps;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Number&nbsp;of&nbsp;swaps&nbsp;(unused)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ac_exitcode;&nbsp;&nbsp;/*&nbsp;Process&nbsp;termination&nbsp;status
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="/cgi-bin/man/man2html?2+wait">wait</A>(2))&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ac_comm[ACCT_COMM+1];
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Command&nbsp;name&nbsp;(basename&nbsp;of&nbsp;last
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;executed&nbsp;command;&nbsp;null-terminated)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ac_pad[<I>X</I>];&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;padding&nbsp;bytes&nbsp;*/
};
<P>
enum { /* Bits that may be set in ac_flag field */
<BR>&nbsp;&nbsp;&nbsp;&nbsp;AFORK&nbsp;=&nbsp;0x01,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Has&nbsp;executed&nbsp;fork,&nbsp;but&nbsp;no&nbsp;exec&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASU&nbsp;&nbsp;&nbsp;=&nbsp;0x02,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Used&nbsp;superuser&nbsp;privileges&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;ACORE&nbsp;=&nbsp;0x08,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Dumped&nbsp;core&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;AXSIG&nbsp;=&nbsp;0x10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Killed&nbsp;by&nbsp;a&nbsp;signal&nbsp;*/
};
<P>
The
<I>comp_t</I>
data type is a floating-point value consisting of a 3-bit, base-8 exponent,
and a 13-bit mantissa.
A value,
<I>c</I>,
of this type can be converted to a (long) integer as follows:
<P>
<PRE>
v = (c &amp; 0x1fff) &lt;&lt; (((c &gt;&gt; 13) &amp; 0x7) * 3);
</PRE>
<P>
The
<I>ac_utime</I>,
<I>ac_stime</I>,
and
<I>ac_etime</I>
fields measure time in &quot;clock ticks&quot;; divide these values by
<I>sysconf(_SC_CLK_TCK)</I>
to convert them to seconds.
<A NAME="lbAE">&nbsp;</A>
<H3>Version 3 accounting file format</H3>
Since kernel 2.6.8,
an optional alternative version of the accounting file can be produced
if the
<B>CONFIG_BSD_PROCESS_ACCT_V3</B>
option is set when building the kernel.
With this option is set,
the records written to the accounting file contain additional fields,
and the width of
<I>c_uid</I>
and
<I>ac_gid</I>
fields is widened from 16 to 32 bits
(in line with the increased size of UID and GIDs in Linux 2.4 and later).
The records are defined as follows:
<P>
struct acct_v3 {
<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ac_flag;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Flags&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ac_version;&nbsp;&nbsp;&nbsp;/*&nbsp;Always&nbsp;set&nbsp;to&nbsp;ACCT_VERSION&nbsp;(3)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;ac_tty;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Controlling&nbsp;terminal&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ac_exitcode;&nbsp;&nbsp;/*&nbsp;Process&nbsp;termination&nbsp;status&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ac_uid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Real&nbsp;user&nbsp;ID&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ac_gid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Real&nbsp;group&nbsp;ID&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ac_pid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Process&nbsp;ID&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ac_ppid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Parent&nbsp;process&nbsp;ID&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ac_btime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Process&nbsp;creation&nbsp;time&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ac_etime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Elapsed&nbsp;time&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_utime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;User&nbsp;CPU&nbsp;time&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_stime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;System&nbsp;time&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_mem;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Average&nbsp;memory&nbsp;usage&nbsp;(kB)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_io;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Characters&nbsp;transferred&nbsp;(unused)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_rw;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Blocks&nbsp;read&nbsp;or&nbsp;written
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(unused)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_minflt;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Minor&nbsp;page&nbsp;faults&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_majflt;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Major&nbsp;page&nbsp;faults&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;comp_t&nbsp;&nbsp;&nbsp;&nbsp;ac_swaps;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Number&nbsp;of&nbsp;swaps&nbsp;(unused)&nbsp;*/
<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ac_comm[ACCT_COMM];&nbsp;/*&nbsp;Command&nbsp;name&nbsp;*/
};
<A NAME="lbAF">&nbsp;</A>
<H2>VERSIONS</H2>
The
<I>acct_v3</I>
structure is defined in glibc since version 2.6.
<A NAME="lbAG">&nbsp;</A>
<H2>CONFORMING TO</H2>
Process accounting originated on BSD.
Although it is present on most systems, it is not standardized,
and the details vary somewhat between systems.
<A NAME="lbAH">&nbsp;</A>
<H2>NOTES</H2>
Records in the accounting file are ordered by termination time of
the process.
<P>
In kernels up to and including 2.6.9,
a separate accounting record is written for each thread created using
the NPTL threading library;
since Linux 2.6.10,
a single accounting record is written for the entire process
on termination of the last thread in the process.
<P>
The
<I>/proc/sys/kernel/acct</I>
file, described in
<B><A HREF="/cgi-bin/man/man2html?5+proc">proc</A></B>(5),
defines settings that control the behavior of process accounting
when disk space runs low.
<A NAME="lbAI">&nbsp;</A>
<H2>SEE ALSO</H2>
<B><A HREF="/cgi-bin/man/man2html?1+lastcomm">lastcomm</A></B>(1),
<B><A HREF="/cgi-bin/man/man2html?2+acct">acct</A></B>(2),
<B><A HREF="/cgi-bin/man/man2html?8+accton">accton</A></B>(8),
<B><A HREF="/cgi-bin/man/man2html?8+sa">sa</A></B>(8)
<A NAME="lbAJ">&nbsp;</A>
<H2>COLOPHON</H2>
This page is part of release 5.05 of the Linux
<I>man-pages</I>
project.
A description of the project,
information about reporting bugs,
and the latest version of this page,
can be found at
<A HREF="https://www.kernel.org/doc/man-pages/.">https://www.kernel.org/doc/man-pages/.</A>
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT id="1"><A HREF="#lbAB">NAME</A><DD>
<DT id="2"><A HREF="#lbAC">SYNOPSIS</A><DD>
<DT id="3"><A HREF="#lbAD">DESCRIPTION</A><DD>
<DL>
<DT id="4"><A HREF="#lbAE">Version 3 accounting file format</A><DD>
</DL>
<DT id="5"><A HREF="#lbAF">VERSIONS</A><DD>
<DT id="6"><A HREF="#lbAG">CONFORMING TO</A><DD>
<DT id="7"><A HREF="#lbAH">NOTES</A><DD>
<DT id="8"><A HREF="#lbAI">SEE ALSO</A><DD>
<DT id="9"><A HREF="#lbAJ">COLOPHON</A><DD>
</DL>
<HR>
This document was created by
<A HREF="/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 00:06:02 GMT, March 31, 2021
</BODY>
</HTML>