#!/bin/bash Script="${0} ${*}" function usage { echo "Usage: ${0} --inst_set= [--restart] [--stop] [--once] [--sleep_sec=]" exit 1 } for arg in "${@}" do case ${arg} in --restart) Restart=Y shift ;; --stop) Stop="Y" shift ;; --once) Once="Y" shift ;; --inst_set=*) InstrSet="${arg#*=}" shift ;; --sleep_sec=*) SleepSec="${arg#*=}" shift ;; -*|--*) usage ;; *) ;; esac done declare -A InstrSetInstrs InstrSetInstrs[1]=PAIR-BTC-USDT,PAIR-ETH-USDT,PAIR-LTC-USDT,PAIR-XRP-USDT,PAIR-USDT-USD if [ "${InstrSet}" == "" ] then usage fi if [ "${SleepSec}" == "" ] then SleepSec=3 fi Instruments=${InstrSetInstrs[${InstrSet}]} if [ "${Instruments}" == "" ] then echo "Unrecognized instrument settings: ${InstrSet}" usage fi # -------------------- S e t t i n g s RootDir=/home/cvtt/prod # ConfigFile="${RootDir}/config/md_recorder.cfg" ConfigFile="http://cloud11.cvtt.vpn:6789/apps/md_recorder" AdminPort="721${InstrSet}" Exchange=BNBSPOT DbCredKey=TSDB_COINBS_1 Name=MD_RECORDER_BNBSPOT # -------------------- S e t t i n g s LogFile="${RootDir}/logs/$(date '+%Y%m%d_%H%M%S').${Name}_${InstrSet}.log" source ${HOME}/.pyenv/python3.10-venv/bin/activate export PYTHONPATH=${RootDir} Cmd="nohup" Cmd="${Cmd} python3" Cmd="${Cmd} ${RootDir}/cvttpy/apps/md_recorder.py" Cmd="${Cmd} --config=${ConfigFile}" Cmd="${Cmd} --active_exchanges=${Exchange}" Cmd="${Cmd} --instruments=${Instruments}" Cmd="${Cmd} --admin_port=${AdminPort}" Cmd="${Cmd} --log_level=INFO" Cmd="${Cmd} --log_file=${LogFile}" Cmd="${Cmd} --db_credentials_key=${DbCredKey}" Cmd="${Cmd} &" function start_it { echo ${Cmd} eval ${Cmd} & sleep 10 } function check_it { if !(timeout 3 curl -s localhost:${AdminPort}/ping > /dev/null) then echo "${Script} doesn't respond. restarting..." pids=$(ps -ef | grep "admin_port=${AdminPort}" | grep -v grep | tr -s ' ' |cut -d' ' -f2) echo pids=${pids} if [ "${pids}" != "" ] then kill -9 ${pids} fi start_it fi } function kill_it { pids=$(ps -ef |grep "inst_set=${InstrSet}" |grep $(basename ${0}) |grep -v ${$} |grep -v grep |tr -s ' ' |cut -d' ' -f2) if [ "${pids}" != "" ] then echo "Killing ${pids} ..." kill -9 ${pids} fi while (timeout 3 curl -s localhost:${AdminPort}/ping > /dev/null) do echo "Shutting down localhost:${AdminPort}/shutdown ..." timeout 5 curl -s localhost:${AdminPort}/shutdown pids=$(ps -ef | grep "admin_port=${AdminPort}" | grep -v grep | tr -s ' ' |cut -d' ' -f2) echo pids=${pids} if [ "${pids}" != "" ] then kill -9 ${pids} fi done } if [ "${Stop}" == "Y" ] ; then kill_it exit 0 fi if [ "${Once}" == "Y" ] ; then start_it exit 0 fi if [ "${Restart}" == "Y" ] then kill_it fi start_it while true do check_it echo "${Script} is checked" | /usr/bin/ts '[%Y-%m-%d %H:%M:%S]' sleep ${SleepSec} done