#!/bin/bash # file: startstop.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='PseudoChannel.py -m -r' OUTPUT_PID_FILE=running.pid OUTPUT_PID_PATH=. PYTHON_TO_USE="$(which python)" # If using 'virtualenv' with python, specify the local virtualenv dir. VIRTUAL_ENV_DIR="env" #----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 > /dev/null 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" echo "kill: $the_pid" 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