Files
v2realbot/run.sh
David Brazda 801ce61c9d run updte
2024-03-07 14:07:46 +01:00

107 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# file: runstop.sh
#----
# Simple script to start / stop / restart a python script in the background.
#----
#----
# To Use:
# Run "./run.sh start" to start, "./run.sh stop" to stop, and "./run.sh restart" to restart.
#----
#----BEGIN EDITABLE VARS----
SCRIPT_TO_EXECUTE_PLUS_ARGS='v2realbot/main.py -u'
OUTPUT_PID_FILE=running.pid
OUTPUT_PID_PATH=$HOME
PYTHON_TO_USE="python3"
# If using 'virtualenv' with python, specify the local virtualenv dir.
#VIRTUAL_ENV_DIR=""
#----END EDITABLE VARS-------
# Additions for handling strat.log backup
HISTORY_DIR="$HOME/stratlogs"
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
LOG_FILE="strat.log"
BACKUP_LOG_FILE="$HISTORY_DIR/${TIMESTAMP}_$LOG_FILE"
# If virtualenv specified & exists, using that version of python instead.
if [ -d "$VIRTUAL_ENV_DIR" ]; then
PYTHON_TO_USE="$VIRTUAL_ENV_DIR/bin/python"
fi
start() {
# Check and create history directory if it doesn't exist
[ ! -d "$HISTORY_DIR" ] && mkdir -p "$HISTORY_DIR"
# Check if strat.log exists and back it up
if [ -f "$LOG_FILE" ]; then
mv "$LOG_FILE" "$BACKUP_LOG_FILE"
echo "Backed up log to $BACKUP_LOG_FILE"
fi
if [ ! -e "$OUTPUT_PID_PATH/$OUTPUT_PID_FILE" ]; then
nohup "$PYTHON_TO_USE" ./$SCRIPT_TO_EXECUTE_PLUS_ARGS > strat.log 2>&1 & echo $! > "$OUTPUT_PID_PATH/$OUTPUT_PID_FILE"
echo "Started $SCRIPT_TO_EXECUTE_PLUS_ARGS @ Process: $!"
sleep .7
echo "Created $OUTPUT_PID_FILE file in $OUTPUT_PID_PATH dir"
else
echo "$SCRIPT_TO_EXECUTE_PLUS_ARGS is already running."
fi
}
stop() {
if [ -e "$OUTPUT_PID_PATH/$OUTPUT_PID_FILE" ]; then
the_pid=$(<$OUTPUT_PID_PATH/$OUTPUT_PID_FILE)
rm "$OUTPUT_PID_PATH/$OUTPUT_PID_FILE"
echo "Deleted $OUTPUT_PID_FILE file in $OUTPUT_PID_PATH dir"
kill "$the_pid"
COUNTER=1
while [ -e /proc/$the_pid ]
do
echo "$SCRIPT_TO_EXECUTE_PLUS_ARGS @: $the_pid is still running"
sleep .7
COUNTER=$[$COUNTER +1]
if [ $COUNTER -eq 20 ]; then
kill -9 "$the_pid"
fi
if [ $COUNTER -eq 40 ]; then
exit 1
fi
done
echo "$SCRIPT_TO_EXECUTE_PLUS_ARGS @: $the_pid has finished"
else
echo "$SCRIPT_TO_EXECUTE_PLUS_ARGS is not running."
fi
}
restart() {
stop
sleep 1
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0