[CHANGE] Split statistics from Maintenance cron
This commit is contained in:
parent
405fd3d9e0
commit
bb04f890ae
126
cronjobs/run-statistics.sh
Executable file
126
cronjobs/run-statistics.sh
Executable file
@ -0,0 +1,126 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
#########################
|
||||
# #
|
||||
# Configuration Options #
|
||||
# #
|
||||
#########################
|
||||
# PHP Detections, if this fails hard code it
|
||||
PHP_BIN=$( which php )
|
||||
|
||||
# List of cruns to execute
|
||||
CRONS="statistics.php"
|
||||
|
||||
# Output additional runtime information
|
||||
VERBOSE="1"
|
||||
|
||||
# Base path for PIDFILE, (full path).
|
||||
BASEPATH="/tmp"
|
||||
|
||||
# Subfolder for PIDFILE, so it's path will be unique in a multipool server.
|
||||
# Path relative to BASEPATH.
|
||||
# Eg. SUBFOLDER="LTC"
|
||||
SUBFOLDER=""
|
||||
|
||||
################################################################
|
||||
# #
|
||||
# You probably don't need to change anything beyond this point #
|
||||
# #
|
||||
################################################################
|
||||
|
||||
# Mac OS detection
|
||||
OS=`uname`
|
||||
|
||||
|
||||
case "$OS" in
|
||||
Darwin) READLINK=$( which greadlink ) ;;
|
||||
*) READLINK=$( which readlink ) ;;
|
||||
esac
|
||||
|
||||
if [[ ! -x $READLINK ]]; then
|
||||
echo "readlink not found, please install first";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# My own name
|
||||
ME=$( basename $0 )
|
||||
|
||||
# Overwrite some settings via command line arguments
|
||||
while getopts "hfvp:d:" opt; do
|
||||
case "$opt" in
|
||||
h|\?)
|
||||
echo "Usage: $0 [-v] [-p PHP_BINARY] [-d SUBFOLDER]";
|
||||
exit 0
|
||||
;;
|
||||
v) VERBOSE=1 ;;
|
||||
f) PHP_OPTS="$PHP_OPTS -f";;
|
||||
p) PHP_BIN=$OPTARG ;;
|
||||
d) SUBFOLDER=$OPTARG ;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Path to PID file, needs to be writable by user running this
|
||||
PIDFILE="${BASEPATH}/${SUBFOLDER}/${ME}.pid"
|
||||
# Clean PIDFILE path
|
||||
PIDFILE=$($READLINK -m "$PIDFILE")
|
||||
|
||||
# Create folders recursively if necessary
|
||||
if ! $(mkdir -p $( dirname $PIDFILE)); then
|
||||
echo "Error creating PIDFILE path: $( dirname $PIDFILE )"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find scripts path
|
||||
if [[ -L $0 ]]; then
|
||||
CRONHOME=$( dirname $( $READLINK $0 ) )
|
||||
else
|
||||
CRONHOME=$( dirname $0 )
|
||||
fi
|
||||
|
||||
# Change working director to CRONHOME
|
||||
if ! cd $CRONHOME 2>/dev/null; then
|
||||
echo "Unable to change to working directory \$CRONHOME: $CRONHOME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Confiuration checks
|
||||
if [[ -z $PHP_BIN || ! -x $PHP_BIN ]]; then
|
||||
echo "Unable to locate you php binary."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -e 'shared.inc.php' ]]; then
|
||||
echo "Not in cronjobs folder, please ensure \$CRONHOME is set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Our PID of this shell
|
||||
PID=$$
|
||||
|
||||
if [[ -e $PIDFILE ]]; then
|
||||
echo "Cron seems to be running already"
|
||||
RUNPID=$( cat $PIDFILE )
|
||||
if ps fax | grep -q "^\<$RUNPID\>"; then
|
||||
echo "Process found in process table, aborting"
|
||||
exit 1
|
||||
else
|
||||
echo "Process $RUNPID not found. Plese remove $PIDFILE if process is indeed dead."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Write our PID file
|
||||
echo $PID > $PIDFILE
|
||||
|
||||
for cron in $CRONS; do
|
||||
[[ $VERBOSE == 1 ]] && echo "Running $cron, check logfile for details"
|
||||
$PHP_BIN $cron $PHP_OPTS
|
||||
done
|
||||
|
||||
# Remove pidfile
|
||||
rm -f $PIDFILE
|
||||
Loading…
Reference in New Issue
Block a user