You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

51 lines
1.2 KiB

#!/usr/bin/env bash
UMBREL_ROOT="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../../..)"
block_device="${1}"
mount_point="${2}"
set_status="/status-server/set-status"
setup_iptables="/status-server/setup-iptables"
check_if_not_already_running() {
if ps ax | grep $0 | grep -v $$ | grep bash | grep -v grep
then
echo "storage monitor is already running"
exit 1
fi
}
main () {
check_if_not_already_running
while true; do
if ! [[ -e "/dev/${block_device}" ]]; then
echo "Mounted block device no longer exists!"
break
fi
if ! grep --quiet " ${mount_point} " /proc/mounts; then
echo "External storage is no longer mounted!"
break
fi
if grep " ${mount_point} " /proc/mounts | grep --quiet '[ ,]ro[ ,]'; then
echo "External storage is mounted as read only!"
break
fi
if ! df -h "${UMBREL_ROOT}" | grep --quiet "/dev/${block_device}"; then
echo "Umbrel root is no longer bind mounted to external storage!"
break
fi
sleep 1
done
echo "Stopping Umbrel due to failed storage device check..."
docker kill $(docker ps -aq)
$set_status mount errored monitor-check
$setup_iptables --force
}
main