Skip to content
Advertisement

PID of infinite loop run in background (&) in bash script

I have simple bash script

#!/bin/bash

(while true; do
        true;
        sleep 3
done) &

How can I assign pid of this loop to variable, to kill process in future ? I try trap, but loop has own pid so I should know pid of loop running in background to kill it for example after SIGTERM.

Advertisement

Answer

The PID of the background-process started can be extracted from this $! variable.

$ (while true; do
>         true;
>         sleep 3
> done) &
[1] 26159

$ bgPID=$!; echo "$bgPID"         # <---- To store it in a bash variable.
26159

$ kill "$bgPID"
[1]+  Terminated              ( while true; do
    true; sleep 3;
done )
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement