Skip to content

A tool that hides output unless the command fails; now in Go!

License

Notifications You must be signed in to change notification settings

docwhat/chronic

Repository files navigation

Chronic

A tool to hide stdout and stderr when a program runs successfully (i.e., returns exit code 0).

GitHub Actions GitHub release Go Report Card GitHub issues

About

This is a go based version of the classic cronic or chronic tool. Chuck Houpt wrote the original chronic.

Usage

If you've ever used cron to run jobs, you know that it sends an email for any output generated by the command. This is why you see crontabs that look like this:

MAILTO=[email protected]
PATH=/usr/bin:/bin
0 4 0 0 0 my-noisy-command -vF >/dev/null 2>&1

This is an anti-pattern:

  • If you failed to get the command line correct, then you'll end up getting an email.
  • If anything goes wrong, you've lost the output.
  • If you log to a file, then you have to rotate that log, even if 99% of the contents are useless.

With chronic you don't have to worry about that anymore!

MAILTO=[email protected]
PATH=/usr/bin:/bin
0 4 0 0 0 chronic my-noisy-command -vF

Now, you'll get no emails unless my-noisy-command returns a non-zero exit code. If it does return a non-zero exit code, then you'll get an email that looks like this:

To: [email protected]
Subject: [CRON] chronic my-noisy-command -vF

**** command ****
[`bash` `-c` `echo "boo"; echo "emergency" 1>&2; exit 10`]

**** stdout ****
stdout: Normal output from the noisy command.
stdout: Starting messages
stdout: Normal stuff

**** stderr ****
stderr: Standard error output from the noisy command.
stderr:
stderr: [FATAL] Something went wrong!

Exited with 10

Installation

Download binaries

Homebrew

brew install docwhat/tap/chronic

GitHub Releases

The latest release is available on github.com/docwhat/chronic/releases. You can download the binary for your architecture and OS there.

Source

go get docwhat.org/chronic

Compile it yourself

You'll need to install a recent version of Go and set it up. You can check the .travis.yml file to see what version of go I'm using.

go get -u docwhat.org/chronic

Developers

I love contributions! Read CONTRIBUTING.md!