Skip to content

Latest commit

 

History

History
92 lines (56 loc) · 2.78 KB

02.Using_trap_for_signal_handling.md

File metadata and controls

92 lines (56 loc) · 2.78 KB

Using trap for Signal Handling in Linux Scripting

Signal handling is an essential aspect of Linux scripting, allowing scripts to respond to events such as interrupts or errors. The trap command is a powerful tool for managing signals and executing specific actions in response to them. This tutorial will guide you through the usage of trap for signal handling in a Linux environment.

Introduction to Signals

In Linux, signals are software interrupts delivered to a process. They can be generated by the system or other processes to notify a script of specific events or errors. Common signals include SIGTERM for termination and SIGINT for interrupt (e.g., pressing Ctrl+C).

Basic Syntax of trap

The basic syntax of the trap command is:

trap COMMAND SIGNALS
  • COMMAND: The action to be performed when the specified signals are received.
  • SIGNALS: The list of signals for which the command will be executed.

Handling Interrupt Signals

Example: Trapping SIGINT

#!/bin/bash

cleanup() {
    echo "Script interrupted. Cleaning up..."
    # Add cleanup commands here
    exit 1
}

trap cleanup SIGINT

# Rest of the script
echo "Running the script..."

In this example, when the script receives a SIGINT signal (e.g., Ctrl+C), it will execute the cleanup function before exiting.

Handling Errors and Cleanup

Example: Trapping ERR and EXIT

#!/bin/bash

handle_error() {
    echo "Error occurred. Exiting..."
    # Add error handling commands here
}

cleanup() {
    echo "Script completed. Cleaning up..."
    # Add cleanup commands here
}

trap handle_error ERR
trap cleanup EXIT

# Rest of the script
echo "Running the script..."

In this example, the handle_error function will be executed if any command in the script returns a non-zero exit status (ERR). The cleanup function will be executed before the script exits (EXIT).

Ignoring Signals

Example: Ignoring SIGTERM

#!/bin/bash

trap '' SIGTERM

# Rest of the script
echo "Running the script..."

In this example, the script ignores the SIGTERM signal. You might use this approach if you want to prevent external termination of the script.

Conclusion

Using trap for signal handling enhances the robustness of your Linux scripts by allowing them to respond to specific events or errors gracefully. Whether you need to clean up resources, handle interruptions, or ignore certain signals, trap provides a flexible mechanism for customizing the behavior of your scripts in different scenarios. Experiment with these techniques to create resilient scripts that can effectively manage signal events.