#!/bin/bash set -e # ---------------------------------------------------------------------------------------------- # --------------------------- Mover Stop Script for Unraid ------------------------------------- # ---------------------------------------------------------------------------------------------- # ---------------- User Variables, Please adjust in Master.conf as needed ---------------------- # ---------------------------------------------------------------------------------------------- # # User variables can be adjusted in Master.conf # # Scripts now just contain runtime logic # # This new setup allows for profiles and arguments to use the core script # Use arguments in unRAID User Plugin for directory # Example: /mnt/user/appdata/unraid_scripts/Rsync/rsync.sh --dry-run # ---------------------------------------------------------------------------------------------- # -------------- End Of User Variables, Please adjust in Master.conf as needed ----------------- # ---------------------------------------------------------------------------------------------- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../Master.conf" source "$SCRIPT_DIR/../common.sh" parse_args "$@" # CONFIG MOVER_STOP_TIMEOUT=${MOVER_STOP_TIMEOUT:-30} validate_int MOVER_STOP_TIMEOUT "$MOVER_STOP_TIMEOUT" # STATUS MODE if [[ "$SHOW_STATUS" == true ]]; then echo echo "==================================================" echo " โ„น๏ธ MOVER STOP STATUS" echo "--------------------------------------------------" echo " โฑ Timeout: ${MOVER_STOP_TIMEOUT}s" echo " ๐Ÿ“ก Dry Run: $DRY_RUN" echo "==================================================" exit 0 fi # HEADER echo echo "============================================================" echo " ๐Ÿš€ MOVER STOP STARTING" echo "------------------------------------------------------------" echo " โฑ Timeout: ${MOVER_STOP_TIMEOUT}s" echo " ๐Ÿงช Dry Run: $DRY_RUN" echo "============================================================" log "โ„น๏ธ Checking mover status" # FUNCTIONS check_mover_running() { pgrep -f "emhttp.*Mover" >/dev/null 2>&1 } notify_users() { warn "๐ŸŸก Notifying users: mover stopping soon" wall "โš ๏ธ Unraid Mover will stop in ${MOVER_STOP_TIMEOUT} second(s)." } stop_mover() { if [[ "$DRY_RUN" == true ]]; then warn "๐Ÿงช Would stop Unraid Mover process" return fi info "๐ŸŸก Stopping Unraid Mover process" if pkill -f "emhttp.*Mover"; then info "๐ŸŸข Mover stopped successfully" else warn "๐Ÿ”ด Failed to stop mover (may not be running)" fi } # EXECUTION START_TIME=$(date +%s) if check_mover_running; then info "๐ŸŸก Mover is running" notify_users info "โฑ Waiting ${MOVER_STOP_TIMEOUT}s before stopping" sleep "$MOVER_STOP_TIMEOUT" stop_mover else info "๐ŸŸข Mover is not running" fi # FINALIZE END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) # SUMMARY echo echo "============================================================" if check_mover_running; then echo " ๐ŸŸก MOVER STOP SUMMARY" echo "------------------------------------------------------------" echo " โฑ Duration: ${DURATION}s" echo " ๐Ÿ“ก Status: ๐ŸŸก STILL RUNNING OR UNCERTAIN" else echo " ๐ŸŸข MOVER STOP SUMMARY" echo "------------------------------------------------------------" echo " โฑ Duration: ${DURATION}s" echo " ๐Ÿ“ก Status: ๐ŸŸข STOPPED / NOT RUNNING" fi echo "============================================================" info "โ„น๏ธ Mover stop operation complete"