68 lines
1.6 KiB
Plaintext
68 lines
1.6 KiB
Plaintext
|
#!/bin/bash
|
||
|
#
|
||
|
# This script is similar to minion but will do a few additional things:
|
||
|
# - PHP process is run in the background
|
||
|
# - PHP process is monitored and restarted if it exits for any reason
|
||
|
# - Added handlers for SUGHUP, SIGINT, and SIGTERM
|
||
|
#
|
||
|
# This is meant for long running minion tasks (like background workers).
|
||
|
# Shutting down the minion tasks is done by sending a SIGINT or SIGTERM signal
|
||
|
# to this miniond process. You can also restart the minion task by sending a
|
||
|
# SUGHUP signal to this process. It's useful to restart all your workers when
|
||
|
# deploying new code so that the workers reload their code as well.
|
||
|
# You cannot use this script for tasks that require user input because of the
|
||
|
# PHP process running in the background.
|
||
|
#
|
||
|
# Usage: ./miniond [task:name] [--option1=optval1 --option2=optval2]
|
||
|
#
|
||
|
# And so on.
|
||
|
#
|
||
|
|
||
|
# Define some functions
|
||
|
function start_daemon()
|
||
|
{
|
||
|
echo "Starting"
|
||
|
./minion $ARGS & # This assumes miniond is sitting next to minion
|
||
|
pid=$! # Store pid (globally) for later use..
|
||
|
}
|
||
|
|
||
|
function stop_daemon()
|
||
|
{
|
||
|
kill -TERM $pid
|
||
|
wait $pid # Wait for the task to exit and store the exit code
|
||
|
ecode=$? # Store exit code (globally) for later use..
|
||
|
}
|
||
|
|
||
|
function handle_SIGHUP()
|
||
|
{
|
||
|
echo "Restarting"
|
||
|
stop_daemon
|
||
|
start_daemon
|
||
|
}
|
||
|
|
||
|
function handle_SIGTERM_SIGINT()
|
||
|
{
|
||
|
echo "Shutting Down"
|
||
|
stop_daemon
|
||
|
exit $ecode
|
||
|
}
|
||
|
|
||
|
# Register signal handlers
|
||
|
trap handle_SIGHUP SIGHUP
|
||
|
trap handle_SIGTERM_SIGINT SIGTERM SIGINT
|
||
|
|
||
|
ARGS=$@
|
||
|
|
||
|
start_daemon
|
||
|
|
||
|
while :
|
||
|
do
|
||
|
# Pauses the script until $pid is dead
|
||
|
wait $pid
|
||
|
|
||
|
# Make sure someone didn't start it back up already (SIGHUP handler does this)
|
||
|
if ! kill -0 $pid > /dev/null 2>&1
|
||
|
then
|
||
|
start_daemon
|
||
|
fi
|
||
|
done
|