---
name: "cronic"
section: "1"
platform: "linux"
package: "cronic"
version: "3-2.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cronic"
---

# cronic(1)

a shell script to help control the most annoying feature of cron: unwanted emailed output

## NAME

cronic - a shell script to help control the most annoying feature of cron: unwanted emailed output

## SYNOPSIS

**cronic** \[*COMMAND*\]

## DESCRIPTION

Cronic is a small shim shell script for wrapping cron jobs so that cron only sends email when an error has occurred.

Cronic defines an error as any non-trace error output or a non-zero result code.

Cronic filters Bash execution traces (or anything matching **PS4**) from the error output, so jobs can be run with execution tracing to aid forensic debugging.

Cronic has no options, it simply executes its arguments.

*0 1 \* \* \** **cronic** *backup*

With cronic, you can turn on Bash's strict error handling and debug options (exit on error, unset variable detection and execution tracing) to make sure problems are caught early.

## EXAMPLES

**Example cron job:**

```
#!/bin/bash
set -o errexit -o nounset -o xtrace
cp -rp data1 /backup
cp -rp data2 /backup
cp -rp data3 /backup
```

When an error is detected, Cronic outputs a report listing the result code, error output, and combined trace and error output. The combined output can help put error messages in context.

**Example email from cron with cronic info:**

```
From: user@example.net (Cron Daemon)
To: user@example.net
Subject: Cron <user@server> cronic backup
Cronic detected failure or error output for the command:
backup
RESULT CODE: 1
ERROR OUTPUT:
cp: data2: Permission denied
STANDARD OUTPUT:
TRACE-ERROR OUTPUT:
+ cp -rp data1 /backup
+ cp -rp data2 /backup
cp: data2: Permission denied
```

## VERSION HISTORY

**v3** - Use mktemp -d to avoid race-conditions and security problems.

**v2** - Corrected command evaluation, so shell meta-chars are preserved correctly (Thanks to Frank Wallingford for the fix).

**v1** - Initial release.

## OTHER TOOLS

Joey Hess has written a simpler perl version of cronic, named chronic. It is available in Debian as part of *moreutils*.

## AUTHOR

Cronic was written by Chuck Houpt.\
 This man page was formatted from the cronic home page by Daniel Lange.

## REPORTING BUGS

Please report bugs upstream to Chuck Houpt \<chuck@habilis.net\> and use the Debian bugtracker for Debian-specific issues.\
 The cronic home page is \<https://habilis.net/cronic/\>.

## COPYRIGHT

Copyright © 2007-2016 Chuck Houpt. Debian packaging © 2016, 2018 Daniel Lange.\
 License CCO: Public Domain dedication v1.0 \<https://creativecommons.org/publicdomain/zero/1.0/\>.\
 This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

## SEE ALSO

**[crontab(5)](/crontab/5.md),** **[bash(1)](/bash/1.md)**
