diff --git a/start-qortal.sh b/start-qortal.sh index 96198dd..72d5abd 100644 --- a/start-qortal.sh +++ b/start-qortal.sh @@ -1,102 +1,123 @@ #!/bin/bash -QORTAL_RUNNING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") -GUI_START="~/.config/autostart/start-qortal.desktop" +# Check if Qortal is running +QORTAL_RUNNING=$(pgrep -f 'java.*qortal' > /dev/null && echo 1 || echo 0) +GUI_START="${HOME}/.config/autostart/start-qortal.desktop" -if [ -f "${GUI_START}" ]; then - echo "Qortal is set up to start via GUI, waiting 2 minutes for Qortal to start..." - sleep 120 - echo "Checking if Qortal is running..." - QORTAL_RUNNING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") - if [ -n "${QORTAL_RUNNING}" ]; then - echo "Qortal is already running...not starting Qortal..." - exit - else - echo "Qortal did not start after 2 minutes...waiting another 90 seconds..." - sleep 90 - echo "Attempting to start Qortal again..." - bash ~/qortal/start.sh - echo "Waiting 120 seconds..." - sleep 120 - QORTAL_RUNNING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") - if [ -n "${QORTAL_RUNNING}" ]; then - echo "Qortal running, exiting..." - exit - else - echo "Qortal is still not running... checking for auto-fix-visible GUI..." - if [ -f ~/.config/autostart/auto-fix-visible* ]; then - echo "auto-fix-visible exists, waiting for auto-fix script to run..." - exit 1 - else - echo "auto-fix-visible doesn't exist... running auto-fix script manually..." - curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh - chmod +x auto-fix-qortal.sh - echo "Executing auto-fix-qortal.sh..." - ./auto-fix-qortal.sh - exit - fi - fi - fi - -else - echo "Qortal is not set up to start via GUI...Checking if Qortal is running after a 90-second wait..." - sleep 90 - QORTAL_RUNNING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") - if [ -z "${QORTAL_RUNNING}" ]; then - echo "Qortal is not running..." - echo "Attempting to start Qortal..." - bash ~/qortal/start.sh - echo "Start script has executed, awaiting Qortal start..." - sleep 90 - echo "Checking if Qortal is running..." - QORTAL_RUNNING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") - if [ -n "${QORTAL_RUNNING}" ]; then - echo "Qortal has started successfully! Exiting script..." - exit +if [[ -f "$GUI_START" ]]; then + echo "Qortal is set to start via GUI. Checking if it is running..." + + if [[ "$QORTAL_RUNNING" -eq 1 ]]; then + echo "Qortal is already running. Checking if it's responding..." + sleep 60 + QORTAL_RESPONDING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") + + if [[ -n "$QORTAL_RESPONDING" ]]; then + echo "Qortal is running and responding. Exiting..." + exit 0 else - echo "Qortal did not start...force-killing Java and starting again..." + echo "Qortal is running but not responding. Restarting..." killall -9 java - bash ~/qortal/start.sh - echo "Qortal start script has been executed..." - if crontab -l | grep -q '#.*auto-fix-qortal.sh'; then - echo "'auto-fix-qortal.sh' is commented out in crontab. Manually executing auto-fix script..." - echo "Grabbing the newest version of auto-fix script..." - cd - curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh - chmod +x auto-fix-qortal.sh - echo "Executing auto-fix-qortal.sh..." - ./auto-fix-qortal.sh - exit - elif crontab -l | grep -q '[^#]*auto-fix-qortal.sh'; then - echo "'auto-fix-qortal.sh' is active in crontab...auto-fix script should run automatically within 7 min from reboot..." - echo "Checking if machine has just booted..." - UPTIME=$(awk '{print int($1)}' /proc/uptime) - if [ "${UPTIME}" -ge 420 ]; then - echo "Machine has been online longer than 7 min, assuming auto-fix script would have run if it were supposed to..." - echo "Running auto-fix script manually..." - curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh - chmod +x auto-fix-qortal.sh - echo "Executing auto-fix-qortal.sh..." - ./auto-fix-qortal.sh - exit - else - echo "Machine has been online less than 7 min, allowing auto-fix script to run on its own..." - exit - fi - else - echo "'auto-fix-qortal.sh' does not exist in crontab." - echo "Assuming it was removed accidentally..." - echo "Running auto-fix script manually, and setting it up to run automatically..." - curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh - chmod +x auto-fix-qortal.sh - echo "Executing auto-fix-qortal.sh..." - ./auto-fix-qortal.sh - exit - fi + sleep 5 + fi + fi + + echo "Qortal is not running. Starting Qortal..." + cd "${HOME}/qortal" || exit + ./start.sh + echo "Waiting 120 seconds..." + sleep 120 + + QORTAL_RUNNING=$(pgrep -f 'java.*qortal' > /dev/null && echo 1 || echo 0) + QORTAL_RESPONDING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") + + if [[ "$QORTAL_RUNNING" -eq 1 ]]; then + echo "Qortal started successfully. Verifying response after 60 seconds..." + sleep 60 + if [[ -n "$QORTAL_RESPONDING" ]]; then + echo "Qortal is responding! All good! Exiting..." + exit 0 + fi + fi + + echo "Qortal is still not running. Checking for auto-fix-visible script..." + if [[ -f "${HOME}/.config/autostart/auto-fix-visible*" ]]; then + echo "Auto-fix script exists. Waiting for it to run..." + exit 1 + else + echo "Auto-fix script not found. Downloading and executing manually..." + curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh + chmod +x auto-fix-qortal.sh + ./auto-fix-qortal.sh + exit 0 + fi +else + echo "Qortal is not set to start via GUI. Checking if it is running..." + + if [[ "$QORTAL_RUNNING" -eq 1 ]]; then + echo "Qortal is running. Checking response after 60 seconds..." + sleep 60 + QORTAL_RESPONDING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") + + if [[ -n "$QORTAL_RESPONDING" ]]; then + echo "Qortal is responding. Exiting..." + exit 0 + else + echo "Qortal is running but unresponsive. Restarting..." + killall -9 java + sleep 5 + fi + fi + + echo "Qortal is not running. Attempting to start..." + cd "${HOME}/qortal" || exit + ./start.sh + echo "Start script executed. Waiting 90 seconds..." + sleep 90 + + QORTAL_RUNNING=$(pgrep -f 'java.*qortal' > /dev/null && echo 1 || echo 0) + QORTAL_RESPONDING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status") + + if [[ "$QORTAL_RUNNING" -eq 1 ]]; then + echo "Qortal started successfully. Checking response..." + if [[ -n "$QORTAL_RESPONDING" ]]; then + echo "Qortal is running and responding! Exiting..." + exit 0 + fi + fi + + echo "Qortal did not start. Killing Java processes and retrying..." + killall -9 java + cd "${HOME}/qortal" + ./start.sh + + echo "Checking crontab for auto-fix script..." + if crontab -l | grep -q '#.*auto-fix-qortal.sh'; then + echo "Auto-fix script is commented out. Running manually..." + curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh + chmod +x auto-fix-qortal.sh + ./auto-fix-qortal.sh + exit 0 + elif crontab -l | grep -q '[^#]*auto-fix-qortal.sh'; then + echo "Auto-fix script is in crontab. Checking machine uptime..." + UPTIME=$(awk '{print int($1)}' /proc/uptime) + + if [[ "$UPTIME" -ge 420 ]]; then + echo "Machine has been online for over 7 minutes. Running auto-fix manually..." + curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh + chmod +x auto-fix-qortal.sh + ./auto-fix-qortal.sh + exit 0 + else + echo "Machine has been online less than 7 minutes. Allowing auto-fix script to run automatically..." + exit 0 fi else - echo "Qortal is running, exiting script..." - exit + echo "Auto-fix script not found in crontab. Running manually and setting up auto-run..." + curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh + chmod +x auto-fix-qortal.sh + ./auto-fix-qortal.sh + exit 0 fi fi