---
name: "savecore"
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/savecore"
---

# savecore(8)

save a core dump of the operating system

## NAME

**savecore** – save a core dump of the operating system

## SYNOPSIS

**savecore** **-c** \[**-v**\] \[*device* *...*\]

**savecore** **-C** \[**-v**\] \[*device* *...*\]

**savecore** **-L** \[**-fvZz**\] \[**-m** *maxdumps*\] \[*directory*\]

**savecore** \[**--libxo**\] \[**-fkuvz**\] \[**-m** *maxdumps*\] \[*directory* \[*device* *...*\]\]

## DESCRIPTION

The **savecore** utility copies a core dump into *directory*, or the current working directory if no *directory* argument is given, and enters a reboot message and information about the core dump into the system log.

The options are as follows:

- **--libxo**

  Generate output via [libxo(3)](/libxo/3.md) in a selection of different human and machine readable formats. See [xo\_options(7)](/xo_options/7.md) for details on command line arguments.

- **-C**

  Check to see if a dump exists, and display a brief message to indicate the status. An exit status of 0 indicates that a dump is there, 1 indicates that none exists. This option is compatible only with the \[**-v**\] option.

- **-c**

  Clear the dump, so that future invocations of **savecore** will ignore it.

- **-f**

  Force a dump to be taken even if either the dump was cleared or if the dump header information is inconsistent.

- **-k**

  Do not clear the dump after saving it.

- **-L**

  Instruct **savecore** to generate and save a kernel dump of the running system, rather than copying one from a dump device.

- **-m** *maxdumps*

  Maximum number of dumps to store. Once the number of stored dumps is equal to *maxdumps* the counter will restart from 0.

- **-u**

  Uncompress the dump in case it was compressed by the kernel.

- **-v**

  Print out some additional debugging information. Specify twice for more information.

- **-Z**

  Compress the dump (see [zstd(1)](/zstd/1.md)). This option is only supported in conjunction with the **-L** option. Regular dumps can be configured for compression with zstd using [dumpon(8)](/dumpon/8.md).

- **-z**

  Compress the dump (see [gzip(1)](/gzip/1.md)). The dump may already be compressed if the kernel was configured to do so by [dumpon(8)](/dumpon/8.md). In this case, the option has no effect.

  If used in conjunction with the **-L** option, the requested live dump will be compressed with gzip.

The **savecore** utility looks for dumps on each device specified by the *device* argument(s), or on each device in */etc/fstab* marked as “dump” or “swap”. The **savecore** utility checks the core dump in various ways to make sure that it is complete. If it passes these checks, it saves the core image in *directory**/vmcore.#* and information about the core in *directory**/info.#*. If the core is encrypted, it saves the dump key in *directory**/key.#*. The core can be later decrypted using [decryptcore(8)](/decryptcore/8.md). For kernel textdumps generated with the [textdump(4)](/textdump/4.md) facility, output will be stored in the [tar(5)](/tar/5.md) format and named *directory**/textdump.tar.#*. The “#” is the number from the first line of the file *directory**/bounds*, and it is incremented and stored back into the file each time **savecore** successfully runs.

The **savecore** utility also checks the available disk space before attempting to make the copies. If there is insufficient disk space in the file system containing *directory*, or if the file *directory**/minfree* exists and the number of free kilobytes (for non-superusers) in the file system after the copies were made would be less than the number in the first line of this file, the copies are not attempted.

If **savecore** successfully copies the kernel and the core dump, the core dump is cleared so that future invocations of **savecore** will ignore it.

The **savecore** utility is meant to be called near the end of the initialization file */etc/rc* (see [rc(8)](/rc/8.md)).

## SEE ALSO

[gzip(1)](/gzip/1.md), [zstd(1)](/zstd/1.md), [getbootfile(3)](/getbootfile/3.md), [libxo(3)](/libxo/3.md), [mem(4)](/mem/4.md), [textdump(4)](/textdump/4.md), [tar(5)](/tar/5.md), [xo\_options(7)](/xo_options/7.md), [crashinfo(8)](/crashinfo/8.md), [decryptcore(8)](/decryptcore/8.md), [dumpon(8)](/dumpon/8.md), [syslogd(8)](/syslogd/8.md)

## HISTORY

The **savecore** utility appeared in 4.1BSD.

Support for kernel textdumps appeared in FreeBSD 7.1.

## BUGS

The minfree code does not consider the effect of compression or sparse files.
