---
name: "acct"
section: "5"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/acct/5"
---

# acct(5)

execution accounting file

## NAME

**acct** – execution accounting file

## SYNOPSIS

**#include \<sys/types.h\>**

**#include \<sys/acct.h\>**

## DESCRIPTION

The kernel maintains the following *acct* information structure for all processes. If a process terminates, and accounting is enabled, the kernel calls the [acct(2)](/acct/2.md) function call to prepare and append the record to the accounting file.

```
#define AC_COMM_LEN 16
/*
 * Accounting structure version 3 (current).
 * The first byte is always zero.
 * Time units are microseconds.
 */
struct acctv3 {
	uint8_t  ac_zero;		/* zero identifies new version */
	uint8_t  ac_version;		/* record version number */
	uint16_t ac_len;		/* record length */
	char	  ac_comm[AC_COMM_LEN];	/* command name */
	float	  ac_utime;		/* user time */
	float	  ac_stime;		/* system time */
	float	  ac_etime;		/* elapsed time */
	time_t	  ac_btime;		/* starting time */
	uid_t	  ac_uid;		/* user id */
	gid_t	  ac_gid;		/* group id */
	float	  ac_mem;		/* average memory usage */
	float	  ac_io;		/* count of IO blocks */
	__dev_t   ac_tty;		/* controlling tty */
	uint16_t ac_len2;		/* record length */
	union {
		uint32_t  ac_align;	/* force v1 compatible alignment */
#define	AFORK	0x01			/* forked but not exec'ed */
/* ASU is no longer supported */
#define	ASU	0x02			/* used super-user permissions */
#define	ACOMPAT	0x04			/* used compatibility mode */
#define	ACORE	0x08			/* dumped core */
#define	AXSIG	0x10			/* killed by a signal */
#define ANVER	0x20			/* new record version */
		uint8_t  ac_flag;	/* accounting flags */
	} ac_trailer;
#define ac_flagx ac_trailer.ac_flag
};
```

If a terminated process was created by an [execve(2)](/execve/2.md), the name of the executed file (at most ten characters of it) is saved in the field *ac\_comm* and its status is saved by setting one of more of the following flags in *ac\_flag*: AFORK, ACOMPAT, ACORE and ASIG. ASU is no longer supported. ANVER is always set in the above structure.

## SEE ALSO

[lastcomm(1)](/lastcomm/1.md), [acct(2)](/acct/2.md), [execve(2)](/execve/2.md), [sa(8)](/sa/8.md)

## HISTORY

A **acct** file format appeared in Version 7 AT&T UNIX. The current record format was introduced on May 2007. It is backwards compatible with the previous format, which is still documented in ⟨sys/acct.h⟩ and supported by [lastcomm(1)](/lastcomm/1.md) and [sa(8)](/sa/8.md).
