Categories: TutorialsUbuntu

How to Capture Linux Signal in Python

Many times developers need to terminate scripts that are running, using Ctrl+C or other signals. But this is often processed by OS, and not the actual script. But sometimes you may need the script to be able to receive and handle system signals from within the script itself. In this article, we will learn how to capture Linux signal in Python.

How to Capture Linux Signal in Python

Python provides an inbuilt library called signal that allows you to easily capture and work with signals. Let us create a sample python script to capture Linux signal.

$ vi test.py

Add the following lines to set the execution environment and import required libraries.

Sponsored
class="wp-block-preformatted">#!/usr/bin/env python import signal import sys

Next, we define the signal handler.

def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

Next, we register this signal handler using signal.signal(). We specify two arguments in it – the signal that will call the handler, and the name of the handler.

signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C')
signal.pause()

We use the signal.pause() function to cause the process to sleep until it receives a signal. Save and close the file.

Putting it all together.

Sponsored
#!/usr/bin/env python
import signal
import sys

def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C')
signal.pause()

Make the file executable.

$ sudo chmod +x test.py

Run the file with the following command.

$ python test.py

In this article, we have learnt how to capture Linux signal in python script.

Also read:

How to Send Signal from Python
How to Clear Canvas for Redrawing in JS
How to Use Decimal Step Value for Range in Python
How to Get Browser Viewport Dimensions in JS
How to Auto Resize TextArea to Fit Text

The post How to Capture Linux Signal in Python appeared first on Fedingo.

Ubuntu Server Admin

Recent Posts

A CISO’s preview of open source and cybersecurity trends in 2026 and beyond

Open source has come a long way. Recently I was watching a keynote address by…

5 days ago

Canonical Kubernetes officially included in Sylva 1.5

Sylva 1.5 becomes the first release to include Kubernetes 1.32, bringing the latest open source…

5 days ago

Canonical expands total coverage for Ubuntu LTS releases to 15 years with Legacy add-on

Expansion ensures business continuity without forcing major upgrades Today, Canonical announced the expansion of the…

6 days ago

Announcing YARD-Lint: Keep Your Ruby Documentation Solid

TL;DR: YARD-Lint catches documentation issues, just like RuboCop for code. Star it and use it…

6 days ago

Canonical releases FIPS-enabled Kubernetes

Deploy a FedRAMP-ready kubernetes cluster and application suite, with FIPS 140-3 crypto and DISA-STIG hardening…

1 week ago

Canonical announces optimized Ubuntu images for Google Cloud’s Axion N4A Virtual Machines

This new release brings the stability and security of Ubuntu to Axion-based N4A virtual machines…

1 week ago