Much more sensible way to kill the daemon
This commit is contained in:
parent
0d95266d9a
commit
fb3eef64dc
2 changed files with 5 additions and 29 deletions
|
@ -26,7 +26,7 @@ function get_job_id() {
|
||||||
function graceful_exit() {
|
function graceful_exit() {
|
||||||
if [[ -f "$temporary_log_file" ]]; then
|
if [[ -f "$temporary_log_file" ]]; then
|
||||||
pid_to_kill=$(get_daemon_pid)
|
pid_to_kill=$(get_daemon_pid)
|
||||||
touch "/tmp/autobuild.kill.$pid_to_kill"
|
socat -t 86400 - UNIX-CONNECT:/var/run/autobuild.socket >/dev/null 2>&1 <<<"-k $pid_to_kill" # Send kill command to daemon
|
||||||
tail --pid="$pid_to_kill" -f /dev/null 2>/dev/null
|
tail --pid="$pid_to_kill" -f /dev/null 2>/dev/null
|
||||||
rm -f "/tmp/autobuild.kill.$pid_to_kill" 2>/dev/null
|
rm -f "/tmp/autobuild.kill.$pid_to_kill" 2>/dev/null
|
||||||
rm -f "$temporary_log_file" 2>/dev/null
|
rm -f "$temporary_log_file" 2>/dev/null
|
||||||
|
@ -36,7 +36,7 @@ function graceful_exit() {
|
||||||
rm -rf "${temporary_storage_directory:?}"
|
rm -rf "${temporary_storage_directory:?}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# getopt
|
# getopt
|
||||||
|
|
30
autobuildd
30
autobuildd
|
@ -735,28 +735,6 @@ function graceful_exit() {
|
||||||
exit $exit_code
|
exit $exit_code
|
||||||
}
|
}
|
||||||
|
|
||||||
function wait_for_kill() {
|
|
||||||
# This function will be spawned as a child process of the autobuild daemon
|
|
||||||
# The parent process PID should be passed as an argument so we know what to kill
|
|
||||||
|
|
||||||
if [[ $# -lt 1 ]]; then
|
|
||||||
echo "bad args to wait_for_kill"
|
|
||||||
graceful_exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local pid_to_kill="$1"
|
|
||||||
|
|
||||||
# Wait for the kill file to be created.
|
|
||||||
# If we spot the kill file, kill the parent process with SIGTERM
|
|
||||||
# (SIGTERM will be trapped by autobuild so it can go through its graceful_exit process)
|
|
||||||
while [[ ! -f "$system_tmp_directory/autobuild.kill.$pid_to_kill" ]]; do
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -f "${system_tmp_directory:?}/autobuild.kill.$pid_to_kill"
|
|
||||||
kill -s TERM "$pid_to_kill"
|
|
||||||
}
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
echo "autobuild"
|
echo "autobuild"
|
||||||
echo "Copyright (C) 2024 rail5"
|
echo "Copyright (C) 2024 rail5"
|
||||||
|
@ -847,17 +825,13 @@ function display_help() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# And now the program:
|
|
||||||
|
|
||||||
wait_for_kill $$ & # Background wait_for_kill so we can receive termination signals
|
|
||||||
|
|
||||||
# Parse the user's provided arguments
|
# Parse the user's provided arguments
|
||||||
|
|
||||||
arguments=$(cat <&0) # Receive arguments from STDIN
|
arguments=$(cat <&0) # Receive arguments from STDIN
|
||||||
|
|
||||||
eval set -- "$arguments"
|
eval set -- "$arguments"
|
||||||
|
|
||||||
TEMP=$(getopt -o 0123bd:fghlL:no:p:r:su --long local,amd64,i386,arm64,bell,debian-repo:,forgejo-page,github-page,help,list,log:,no-upgrade,output:,package:,remove-old-builds:,setup,upgrade \
|
TEMP=$(getopt -o 0123bd:fghk:lL:no:p:r:su --long local,amd64,i386,arm64,bell,debian-repo:,forgejo-page,github-page,help,kill:,list,log:,no-upgrade,output:,package:,remove-old-builds:,setup,upgrade \
|
||||||
-n 'autobuild' -- "$@")
|
-n 'autobuild' -- "$@")
|
||||||
|
|
||||||
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; graceful_exit 1 ; fi
|
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; graceful_exit 1 ; fi
|
||||||
|
@ -940,6 +914,8 @@ while true; do
|
||||||
make_github_release_pages=true; shift ;;
|
make_github_release_pages=true; shift ;;
|
||||||
-h | --help )
|
-h | --help )
|
||||||
display_help; graceful_exit ;;
|
display_help; graceful_exit ;;
|
||||||
|
-k | --kill )
|
||||||
|
kill "$2"; graceful_exit ;;
|
||||||
-l | --list )
|
-l | --list )
|
||||||
just_list_packages=true; shift ;;
|
just_list_packages=true; shift ;;
|
||||||
-L | --log )
|
-L | --log )
|
||||||
|
|
Loading…
Reference in a new issue