46 lines
836 B
Bash
Executable File
46 lines
836 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 {} \;
|
|
chown executor:executor /var/run/cloner.pid
|
|
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"
|
|
|