docker-seafile/scripts/seafile-server.sh
2018-09-09 17:12:01 +02:00

83 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
LATEST=$SEAF/seafile-server-latest
PIDS=$SEAF/pids
function stop() {
$0 stop
}
case "$1" in
run)
if [ ! -e "$LATEST" ]; then
(>&2 echo This appears to be the fist run, installing..)
$0 run-upgrade
else
$0 manage-component seaf-server start $LATEST/seafile.sh start
$0 manage-component seahub start $LATEST/seahub.sh "${SEAF_HUB_MODE:-start} 8000" &
$0 manage-component nginx start nginx &
wait
fi
trap stop SIGINT SIGTERM
while pgrep -f "seafile-controller" 2>&1 >/dev/null; do
sleep 2;
done
;;
run-upgrade)
$0 upgrade && $0 run
;;
stop)
$0 manage-component seaf-server stop &
$0 manage-component seahub stop &
$0 manage-component nginx stop &
$0 manage-component ccnet stop &
wait
;;
stop-upgrade)
$0 stop && $0 upgrade
;;
upgrade)
/usr/local/sbin/upgrade main
kill -SIGHUP $(pgrep -o nginx) #Reload nginx
;;
manage-component)
mkdir -p /var/run/seafile
NAME="$2"
PIDFILE=/var/run/seafile/$NAME.pid
case "$3" in
start)
CMD="$4"; ARGS="$5"
"$CMD $ARGS &"
sleep 1
( ! "$0 $1 $NAME status") && ((>&2 echo Failed to start $NAME); exit 1)
PID=$?
#echo $PID > /var/run/seafile/$NAME.pid
;;
status)
([ -e "$PIDFILE" ] && kill -0 $(cat $PIDFILE) 2> /dev/null && echo Running) || (echo Stopped && exit 1)
;;
stop)
if "$0 $1 $NAME status"; then
kill $(cat $PIDFILE)
TRIES=30
while "$0 $1 $NAME status"; do
TRIES=$((TRIES - 1))
if [ $TRIES -eq 0 ]; then
(>&2 echo Failed to stop $NAME)
exit 1
fi
sleep 1
done
(>&2 echo $NAME has been stopped)
else
(>&2 echo $NAME is not running)
exit 1
fi
;;
esac
;;
*)
(>&2 echo Unknown option $1 options include: run, run-upgrade, upgrade, stop, stop-upgrade)
;;
esac