I start a background process from my shell script, and I would like to kill this process when my script finishes.
How to get the PID of this process from my shell script? As far as I can see variable
$! contains the PID of the current script, not the background process.
You need to save the PID of the background process at the time you start it:
foo & FOO_PID=$! # do other stuff kill $FOO_PID
You cannot use job control, since that is an interactive feature and tied to a controlling terminal. A script will not necessarily have a terminal attached at all so job control will not necessarily be available.
Answered By – camh