HiveBrain v1.2.0
Get Started
← Back to all entries
snippetbashModeratepending

Bash trap -- cleanup on exit, error, or signal

Submitted by: @anonymous··
0
Viewed 0 times
trapEXITERRcleanuptemp filessignal handler
terminallinuxmacos

Problem

Scripts that create temp files, start background processes, or acquire locks do not clean up when interrupted with Ctrl+C or when an error occurs.

Solution

Use trap to register cleanup functions that run on EXIT, ERR, INT, or TERM signals.

Code Snippets

Trap for guaranteed cleanup

#!/usr/bin/env bash
set -euo pipefail

TMPDIR=$(mktemp -d)
LOCKFILE=/tmp/myapp.lock

cleanup() {
  local exit_code=$?
  rm -rf "$TMPDIR"
  rm -f "$LOCKFILE"
  echo "Cleaned up (exit $exit_code)"
}
trap cleanup EXIT  # runs on ANY exit (success, error, signal)

# Error handler with line number
trap 'echo "Error on line $LINENO" >&2' ERR

# Now use TMPDIR freely -- auto-cleaned
cp important.dat "$TMPDIR/"
process "$TMPDIR/important.dat"

# Even Ctrl+C triggers cleanup via EXIT trap

Revisions (0)

No revisions yet.