added auto-restart-qortal.sh - to run ./auto-restart-qortal.sh {number-of-hours}
This commit is contained in:
parent
60ee379eeb
commit
db1e5c02e5
68
auto-restart-qortal.sh
Executable file
68
auto-restart-qortal.sh
Executable file
@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Usage: ./auto-restart-qortal.sh [restart_interval_hours]
|
||||
|
||||
# Check if restart interval is provided
|
||||
if [ -z "$1" ]; then
|
||||
RESTART_INTERVAL_HOURS=6
|
||||
log "restart interval is set to: '$RESTART_INTERVAL_HOURS hours'"
|
||||
echo "No restart interval provided. Using default: $RESTART_INTERVAL_HOURS hours"
|
||||
else
|
||||
RESTART_INTERVAL_HOURS=$1
|
||||
fi
|
||||
|
||||
QORTAL_DIR="$HOME/qortal" # Default path to Qortal directory
|
||||
LOG_FILE="$QORTAL_DIR/auto_restart_log.txt"
|
||||
|
||||
# Check if screen exists
|
||||
if command -v screen &> /dev/null; then
|
||||
USE_SCREEN=true
|
||||
else
|
||||
USE_SCREEN=false
|
||||
fi
|
||||
|
||||
# Log function
|
||||
log() {
|
||||
if [ -n "$LOG_FILE" ]; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
|
||||
else
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to restart Qortal
|
||||
restart_qortal() {
|
||||
log "Restarting Qortal..."
|
||||
cd "$QORTAL_DIR" || {
|
||||
log "Failed to change directory to $QORTAL_DIR"
|
||||
exit 1
|
||||
}
|
||||
./stop.sh
|
||||
sleep 60
|
||||
./start.sh
|
||||
log "Qortal restarted."
|
||||
}
|
||||
|
||||
# Main loop function
|
||||
main_loop() {
|
||||
log "Restart interval set to: $RESTART_INTERVAL_HOURS hours"
|
||||
while true; do
|
||||
restart_qortal
|
||||
sleep $((RESTART_INTERVAL_HOURS * 3600)) # Convert hours to seconds and wait
|
||||
done
|
||||
}
|
||||
|
||||
# Run the script in a screen session if available
|
||||
if [ "$USE_SCREEN" = true ]; then
|
||||
if screen -list | grep -q "auto_restart_monitor"; then
|
||||
log "Screen session 'auto_restart_monitor' already exists. Attaching to existing session."
|
||||
screen -x auto_restart_monitor
|
||||
else
|
||||
screen -dmS auto_restart_monitor bash -c "$(declare -f log restart_qortal main_loop); RESTART_INTERVAL_HOURS=$RESTART_INTERVAL_HOURS; QORTAL_DIR=$QORTAL_DIR; LOG_FILE=$LOG_FILE; main_loop"
|
||||
log "Started in a new screen session."
|
||||
fi
|
||||
else
|
||||
log "Screen not found. Running in the current session."
|
||||
main_loop
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user