Steemit Witness Journey - (Un)useful Scripts

in #steem6 years ago (edited)

Although did not managed to produce a single block yet, the 'admin disease' made me think on how to prevent missing them :) In my witness journey, I wrote a few scripts to start/stop and watchdog the steemd process. The same principle is used for cli_wallet so I am not going to repeat, but the PID principle is clear. The helpful thing is auto-restart, and simulating CTRL + C to make clean exit with SIGINT Posix signal.

binbash.png

Start/Stop Script


#!/bin/sh

pid_r=`pgrep -u root steemd -o`
pid_f=`cat /home/steem/Pids/steemd.pid`

case $1 in
        start)
                if [ -z $pid_r ]
                then
                        pkill -SIGINT steemd
                        sleep 10
                        /home/steem/steemd &
                        sleep 3
                        pid_y=`pgrep -u root steemd -o`
                        echo "PID is $pid_y"
                        echo "$pid_y" > /home/steem/Pids/steemd.pid
                        echo "Process started"
                else 
                        if [ "$pid_f" = "$pid_r" ]
                        then
                                echo "All OK"
                        else
                                echo "Wrong"
                                killall steemd
                                /home/steem/steemd --replay-blockchain &
                                pid_n=`pgrep -u root steemd -o`
                                echo "NEW PID $pid_n"
                                echo "$pid_n" > /home/steem/Pids/steemd.pid
                                echo "Process restarted"
                        fi
                fi
        ;;   
        stop)
                pkill -SIGINT steemd
                echo > /home/steem/Pids/steemd.pid
        ;;
        *)
        echo "usage : /home/steem/Start/steemd.sh {start|stop}"
 esac

If you ever wondered how to run something from Crontab that executes more frequently then a minute, here is a trick :)


Watchdoggy script


#!/bin/bash
#
# steemit watchdoggy
#
cd /home/steem
ulimit -n 100000

now=$(perl -e 'alarm shift @ARGV; exec @ARGV' 2 /home/steem/./steemd & | grep starting)


if [[ "$now" == *starting* ]]
then
  echo "It's there!";
else
  echo "Timeout";
  logger "Having fun with Steemd again"
  sendemail -f [email protected] -t [email protected] -u "Steemd Problem" -m "Having fun with server" -s aspmx.l.google.com:25 
  
  pkill -SIGINT steemd
  sleep 10
  killall steemd
  ./steemd
fi

sleep 15

now=$(perl -e 'alarm shift @ARGV; exec @ARGV' 2 /home/steem/./steemd & | grep starting)


if [[ "$now" == *starting* ]]
then
  echo "It's there!";
else
  echo "Timeout";
  logger "Having fun with steemd again"
  sendemail -f [email protected] -t [email protected] -u "Steemd Problem" -m "Having fun with server" -s aspmx.l.google.com:25 
  
  pkill -SIGINT steemd
  sleep 10
  killall steemd
  ./steemd
fi


sleep 15

now=$(perl -e 'alarm shift @ARGV; exec @ARGV' 2 /home/steem/./steemd & | grep starting)


if [[ "$now" == *starting* ]]
then
  echo "It's there!";
else
  echo "Timeout";
  logger "Having fun with steemd again"
  sendemail -f [email protected] -t [email protected] -u "Steemd Problem" -m "Having fun with server" -s aspmx.l.google.com:25 
  
  pkill -SIGINT steemd
  sleep 10
  killall steemd
  ./steemd
fi


Not nice at all, require a lot of work, but sharing in case someone finds useful :)

Want to vote in support? You can do it with unlocked cli_wallet by executing

vote_for_witness "yourusername" "crt" true true
or by casting a Vote by entering crt at the bottom of the page here https://steemit.com/~witnesses