Skip to content

Instantly share code, notes, and snippets.

@thejohnfreeman
Last active August 23, 2023 12:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thejohnfreeman/cfd5e3f6f74120d05db31088bfda839d to your computer and use it in GitHub Desktop.
Save thejohnfreeman/cfd5e3f6f74120d05db31088bfda839d to your computer and use it in GitHub Desktop.
terminate background sudo
#!/usr/bin/env bash
psudo() {
sudo --validate
dir=$(mktemp -d)
mkfifo ${dir}/pipe
sudo sh -c "echo \$\$ >${dir}/pipe; exec $*" &
pid=$(cat ${dir}/pipe)
rm -rf ${dir}
}
sudo --validate
echo "start"
sudo sleep 100 &
echo $!
pstree -pT $!
ps $!
for signal in SIGTERM; do
echo ${signal}
kill -${signal} $!
echo $?
pstree -pT $!
if ! ps $!; then
break
fi
done
echo "wait"
time wait $!
echo $?
pstree -pT $!
ps $!
start
3479154
sudo(3479154)───sudo(3479156)───sleep(3479157)
PID TTY STAT TIME COMMAND
3479154 pts/12 S+ 0:00 sudo sleep 100
SIGTERM
0
PID TTY STAT TIME COMMAND
wait
real 0m0.000s
user 0m0.000s
sys 0m0.000s
143
PID TTY STAT TIME COMMAND
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment