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

# pstat(8)

display system data structures

## NAME

**pstat**, **swapinfo** – display system data structures

## SYNOPSIS

**pstat** \[**-Tfghkmnst**\] \[**-M** *core* \[**-N** *system*\]\]

**swapinfo** \[**-ghkm**\] \[**-M** *core* \[**-N** *system*\]\]

## DESCRIPTION

The **pstat** utility displays open file entry, swap space utilization, terminal state, and vnode data structures.

If invoked as **swapinfo** the **-s** option is implied, and only the **-k**, **-m**, **-g**, and **-h** options are legal.

If the **-M** option is not specified, information is obtained from the currently running kernel via the [sysctl(3)](/sysctl/3.md) interface. Otherwise, information is read from the specified core file, using the name list from the specified kernel image (or from the default image).

The following options are available:

- **-n**

  Print devices out by major/minor instead of name.

- **-h**

  “Human-readable” output. Use unit suffixes when printing swap partition sizes: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte and Petabyte.

- **-k**

  Print sizes in kilobytes, regardless of the setting of the BLOCKSIZE environment variable.

- **-m**

  Print sizes in megabytes, regardless of the setting of the BLOCKSIZE environment variable.

- **-g**

  Print sizes in gigabytes, regardless of the setting of the BLOCKSIZE environment variable.

- **-T**

  Print the number of used and free slots in several system tables. This is useful for checking to see how large system tables have become if the system is under heavy load.

- **-f**

  Print the open file table with these headings:

  - LOC

    The core location of this table entry.

  - TYPE

    The type of object the file table entry points to.

  - FLG

    Miscellaneous state variables encoded thus:

    - R

      open for reading

    - W

      open for writing

    - A

      open for appending

    - I

      signal pgrp when data ready

  - CNT

    Number of processes that know this open file.

  - MSG

    Number of messages outstanding for this file.

  - DATA

    The location of the vnode table entry or socket structure for this file.

  - OFFSET

    The file offset (see [lseek(2)](/lseek/2.md)).

- **-s**

  Print information about swap space usage on all the swap areas compiled into the kernel. The first column is the device name of the partition. The next column is the total space available in the partition. The *Used* column indicates the total blocks used so far; the *Available* column indicates how much space is remaining on each partition. The *Capacity* reports the percentage of space used.

  If more than one partition is configured into the system, totals for all of the statistics will be reported in the final line of the report.

- **-t**

  Print table for terminals with these headings:

  - LINE

    Device name.

  - INQ

    Number of characters that can be stored in the input queue.

  - CAN

    Number of characters in the input queue which can be read.

  - LIN

    Number of characters in the input queue which cannot be read yet.

  - LOW

    Low water mark for input.

  - OUTQ

    Number of characters that can be stored in the output queue.

  - USE

    Number of bytes in the output queue.

  - LOW

    Low water mark for output.

  - COL

    Calculated column position of terminal.

  - SESS

    Process ID of the session leader.

  - PGID

    Process group for which this is the controlling terminal.

  - STATE

    Miscellaneous state variables encoded thus:

    - I

      init/lock-state device nodes present

    - C

      callout device nodes present

    - O

      opened

    - c

      console in use

    - G

      gone

    - B

      busy in [open(2)](/open/2.md)

    - Y

      send SIGIO for input events

    - L

      next character is literal

    - H

      high watermark reached

    - X

      open for exclusive use

    - S

      output stopped (ixon flow control)

    - l

      block mode input routine in use

    - Z

      connection lost

    - s

      i/o being snooped

    - b

      busy in [read(2)](/read/2.md) or [write(2)](/write/2.md)

      The ‘i’ and ‘o’ characters refer to the previous character, to differentiate between input and output.

- **-M**

  Extract values associated with the name list from the specified core.

- **-N**

  If **-M** is also specified, extract the name list from the specified system instead of the default, which is the kernel image the system has booted from.

## ENVIRONMENT

- BLOCKSIZE

  If the environment variable BLOCKSIZE is set, and the **-h**, **-k**, or **-m** options are not specified, the block counts will be displayed in units of that block size. If BLOCKSIZE is not set, and the **-h**, **-k**, or **-m** options are not specified, the block counts will be displayed in 512-byte blocks.

## SEE ALSO

[ps(1)](/ps/1.md), [systat(1)](/systat/1.md), [stat(2)](/stat/2.md), [fs(5)](/fs/5.md), [iostat(8)](/iostat/8.md), [vmstat(8)](/vmstat/8.md) K. Thompson, *UNIX Implementation*.

## HISTORY

The **pstat** utility appeared in 4.0BSD.

## BUGS

Does not understand NFS swap servers.
