mirror of
https://github.com/acedanger/shell.git
synced 2025-12-06 04:30:13 -08:00
151 lines
3.8 KiB
Bash
Executable File
151 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Simple script to run backup web app in a persistent screen session
|
|
|
|
SESSION_NAME="backup-web-app"
|
|
APP_DIR="/home/acedanger/shell"
|
|
PYTHON_CMD="python3"
|
|
|
|
# Colors for output
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
print_status() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
check_screen() {
|
|
if ! command -v screen &> /dev/null; then
|
|
print_error "Screen is not installed. Install it with: sudo apt install screen"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
start_app() {
|
|
check_screen
|
|
|
|
# Check if session already exists
|
|
if screen -list | grep -q "$SESSION_NAME"; then
|
|
print_warning "Session '$SESSION_NAME' already exists"
|
|
print_status "Use './run-backup-web-screen.sh status' to check or './run-backup-web-screen.sh stop' to stop"
|
|
exit 1
|
|
fi
|
|
|
|
print_status "Starting backup web app in screen session '$SESSION_NAME'..."
|
|
|
|
# Start new detached screen session
|
|
cd "$APP_DIR" || exit 1
|
|
screen -dmS "$SESSION_NAME" bash -c "
|
|
export BACKUP_ROOT=/mnt/share/media/backups
|
|
export FLASK_ENV=production
|
|
$PYTHON_CMD backup-web-app.py
|
|
"
|
|
|
|
sleep 2
|
|
|
|
if screen -list | grep -q "$SESSION_NAME"; then
|
|
print_status "✅ Backup web app started successfully!"
|
|
print_status "Session: $SESSION_NAME"
|
|
print_status "URL: http://localhost:5000"
|
|
print_status ""
|
|
print_status "Commands:"
|
|
print_status " View logs: ./run-backup-web-screen.sh logs"
|
|
print_status " Stop app: ./run-backup-web-screen.sh stop"
|
|
print_status " Status: ./run-backup-web-screen.sh status"
|
|
else
|
|
print_error "Failed to start the application"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
stop_app() {
|
|
if screen -list | grep -q "$SESSION_NAME"; then
|
|
print_status "Stopping backup web app..."
|
|
screen -S "$SESSION_NAME" -X quit
|
|
print_status "✅ Application stopped"
|
|
else
|
|
print_warning "No session '$SESSION_NAME' found"
|
|
fi
|
|
}
|
|
|
|
status_app() {
|
|
if screen -list | grep -q "$SESSION_NAME"; then
|
|
print_status "✅ Backup web app is running"
|
|
print_status "Session details:"
|
|
screen -list | grep "$SESSION_NAME"
|
|
print_status ""
|
|
print_status "Access the session with: screen -r $SESSION_NAME"
|
|
print_status "Detach from session with: Ctrl+A, then D"
|
|
else
|
|
print_warning "❌ Backup web app is not running"
|
|
fi
|
|
}
|
|
|
|
show_logs() {
|
|
if screen -list | grep -q "$SESSION_NAME"; then
|
|
print_status "Connecting to session '$SESSION_NAME'..."
|
|
print_status "Press Ctrl+A, then D to detach from the session"
|
|
screen -r "$SESSION_NAME"
|
|
else
|
|
print_error "No session '$SESSION_NAME' found. App is not running."
|
|
fi
|
|
}
|
|
|
|
restart_app() {
|
|
print_status "Restarting backup web app..."
|
|
stop_app
|
|
sleep 2
|
|
start_app
|
|
}
|
|
|
|
show_help() {
|
|
echo "Backup Web App Screen Manager"
|
|
echo
|
|
echo "Usage: $0 {start|stop|restart|status|logs|help}"
|
|
echo
|
|
echo "Commands:"
|
|
echo " start - Start the app in a screen session"
|
|
echo " stop - Stop the app"
|
|
echo " restart - Restart the app"
|
|
echo " status - Check if app is running"
|
|
echo " logs - Connect to the screen session to view logs"
|
|
echo " help - Show this help message"
|
|
}
|
|
|
|
case "${1:-}" in
|
|
start)
|
|
start_app
|
|
;;
|
|
stop)
|
|
stop_app
|
|
;;
|
|
restart)
|
|
restart_app
|
|
;;
|
|
status)
|
|
status_app
|
|
;;
|
|
logs)
|
|
show_logs
|
|
;;
|
|
help|--help|-h)
|
|
show_help
|
|
;;
|
|
*)
|
|
print_error "Invalid command: ${1:-}"
|
|
echo
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|