107 lines
2.6 KiB
Bash
Executable File
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
|