Every now and then I have to run a foreground job under sudo that doesn't want to die when I hit ^C. Then it's a hassle to ^Z, get the pid of the sudo job, and sudo kill that pid.
So I wrote a little script (or a template for scripts) that runs the sudo job in the background (but preserves stdout/stderr) and relies on bash to clean up the job when you ^C the script. Only gotcha with this is that you may have to retype your sudo password when you ^C if your authentication has timed out by the time you get around to killing it.
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash function cleanup() { sudo kill $job_pid wait $job_pid exit 0 } trap cleanup SIGTERM trap cleanup SIGINT sudo long_running_foreground_process & job_pid=$! wait |