~/Blog

Brandon Rozek

Photo of Brandon Rozek

PhD Student @ RPI studying Automated Reasoning in AI and Linux Enthusiast.

Handling Background Processes in Bash

Published on

Updated on

Warning: This post has not been modified for over 2 years. For technical posts, make sure that it is still relevant.

For multi-process applications, I want to be able to start it up using the bash command processor and be able to stop all the processes just by hitting CTRL-C.

As a quick reminder, to have a task run in the background you need to add a & at the end of the line.

execute_app &

Previously, I was grabbing the PID of this background process, trapping the interrupt signal and taking the time to send the interrupt signal to all of the background processes.

You can get the child pid by referencing the variable $! after sending a process to the background.

Now I just use setsid to set the process group of the background processes to be the same as the bash process itself. The following demo script here will show the capability.

#!/bin/bash
setsid sleep 5 &
setsid sleep 10 &
wait

This script will send two processes to the background and will wait until all the processes are finished. Hitting CTRL-C during execution will send the interrupt signal to all of the processes achieving my goal.

Reply via Email Buy me a Coffee
Was this useful? Feel free to share: Hacker News Reddit Twitter

Published a response to this? :