repo-cloner/dockerbin/cron-command

45 lines
791 B
Bash
Executable File

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# try to include laminar env
if [ -f /etc/profile.d/laminar.sh ]
then
source /etc/profile.d/laminar.sh
fi
# if started as root
if [ $UID -eq 0 ]
then
find /data \! -user executor -exec chown executor:executor {} \;
su executor -c cron-command
exit $?
fi
# check lock
lock=/var/run/cloner.pid
dir_prefix=cloner
max_jobs=${JOBS:-3}
function die(){
echo $@ 1>&2
exit 1
}
# first, check process
if [ -f $lock ]
then
pid=$(cat $lock)
# if it still runs, die not so quietly
[ -n "$pid" ] && [ -d /proc/$pid ] && die "Another process running!"
fi
# else make some mess and setup trap
echo $BASHPID > $lock
find /data -maxdepth 1 -type d -name "${dir_prefix}-*" | \
parallel --lb -j $max_jobs -n 1 run-mirror-update
echo "Cron Finished"