#!/bin/bash # file: runstop.sh #---- # Simple script to start / stop a python script in the background. #---- #---- # To Use: # Just run: "./startstop.sh". If the process is running it will stop it or it will start it if not. #---- #----BEGIN EDITABLE VARS---- SCRIPT_TO_EXECUTE_PLUS_ARGS='v2realbot/main.py -u' OUTPUT_PID_FILE=running.pid OUTPUT_PID_PATH=. PYTHON_TO_USE="python3" # If using 'virtualenv' with python, specify the local virtualenv dir. #VIRTUAL_ENV_DIR="" #----END EDITABLE VARS------- # 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 # If the .pid file doesn't exist (let's assume no processes are running)... if [ ! -e "$OUTPUT_PID_PATH/$OUTPUT_PID_FILE" ]; then # If the running.pid file doesn't exists, create it, start PseudoChannel.py and add the PID to it. "$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 # If the running.pid exists, read it & try to kill the process if it exists, then delete it. 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" fi exit 0