From 33a93d7bc200395c4001a138a8d8b206f5980b60 Mon Sep 17 00:00:00 2001 From: "flow.gunso" Date: Wed, 24 Apr 2019 11:07:41 +0200 Subject: [PATCH] Improve with support for libraries status that prevent restarts --- assets/seafile-healthcheck.sh | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/assets/seafile-healthcheck.sh b/assets/seafile-healthcheck.sh index dc7abb6..16f60d4 100755 --- a/assets/seafile-healthcheck.sh +++ b/assets/seafile-healthcheck.sh @@ -16,11 +16,32 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -set -x +# `seaf-cli status` output csv-like information with tabulates as separators and columns named in comment lines. +# The Seafile client should not be restarted while some statuses are occuring, such as "downloading" or "committing". +# +# This script grabs the output while ignoring the comments to iterate over the informations set to their columns, +# then it compares the statuses, when not empty, to the ones that do not require a restart. Finally either restart or don't. -sleep 10 +seaf=/usr/bin/seaf-cli +dont_restart_on=("downloading" "committing" "waiting for sync") +restart=true + +sleep 10s while true; do - /usr/bin/seaf-cli stop - /usr/bin/seaf-cli start - sleep 1200 + while IFS=$'\t' read -r name status progress; do + if [ $status ]; then + for dont_restart_on_status in "${dont_restart_on[@]}"; do + if [ "$status" == "$dont_restart_on_status" ]; then + restart=false; break; break + fi + done + fi + done < <($seaf status | grep -v "^#") + + if $restart; then + $seaf stop + $seaf start + fi + + sleep 10m done \ No newline at end of file