Forum Linux.pl

Programowanie => Języki skryptowe => Wątek zaczęty przez: Bartekkor w 2006-10-05, 17:19:00

Tytuł: skrypt niby autostart
Wiadomość wysłana przez: Bartekkor w 2006-10-05, 17:19:00
Witam!
Mam konto shellowe i chciałbym napisac skrypt który będzie uruchamiac proces np po resecie serwera lub po wyłączeniu procesu. Proces ten zapisuje pid do pliku przy jego odpalaniu
więc. Odrazu mówie ze nie mam dostępu do autostartu.

tutaj dodaje skrypt który znalazłem i który działa z eggdropem

####################################################
#! /bin/sh
#
# botchk
#
# $Id: botchk,v 1.6 2002/02/27 18:21:46 guppy Exp $
#
# This is a script suitable for use in a crontab.  It checks to make sure
# your bot is running.  YOU NEED A SEPARATE CRON JOB FOR EACH BOT.  If your
# bot isn't found, it'll try to start it back up.
#
# You'll need to edit this script for your bot.
#
# To check for your bot every 10 minutes, put the following line in your
# crontab:
#    0,10,20,30,40,50 * * * *   /home/mydir/mybot/botchk
# And if you don't want to get email from crontab when it checks you bot,
# put the following in your crontab:
#    0,10,20,30,40,50 * * * *   /home/mydir/mybot/botchk >/dev/null 2>&1
#

# change this to the directory you run your bot from (capitalization COUNTS):
botdir="/home/mydir/mybot"

# change this to the name of your bot's config file (capitalization COUNTS):
botscript="mybot"

# change this to the botnet-nick of your bot (capitalization COUNTS):
botname="LamestBot"

# change this to the name of your bot's userfile (capitalization COUNTS):
userfile="LamestBot.user"

# change this to the name of your bot's pidfile (capitalization COUNTS):
pidfile="pid.LamestBot"

########## you probably don't need to change anything below here ##########

cd $botdir

# is there a pid file?
if test -r $pidfile
then
  # there is a pid file -- is it current?
  botpid=`cat $pidfile`
  if `kill -CHLD $botpid >/dev/null 2>&1`
  then
    # it's still going -- back out quietly
    exit 0
  fi
  echo ""
  echo "Stale $pidfile file, erasing..."
  rm -f $pidfile
fi

if test -r CANTSTART.$botname
then
  if test -r $userfile || test -r $userfile~new || test -r $userfile~bak
  then
    echo ""
    echo "Userfile found, removing check file 'CANTSTART.$botname'..."
    rm -f CANTSTART.$botname
  fi
fi

# test if we have run botchk previously and didn't find a userfile
if test ! -f CANTSTART.$botname
then
  echo ""
  echo "Couldn't find bot '$botname' running, reloading..."
  echo ""
  # check for userfile and reload bot if found
  if test -r $userfile
  then
    # It's there, load the bot
    ./$botscript
    exit 0
  else
    if test -r $userfile~new
    then
      # Bot f*@!ed up while saving the userfile last time.  Move it over.
      echo "Userfile missing.  Using last saved userfile..."
      mv -f $userfile~new $userfile
      ./$botscript
      exit 0
    else
      if test -r $userfile~bak
      then
        # Userfile is missing, use backup userfile.
        echo "Userfile missing.  Using backup userfile..."
        cp -f $userfile~bak $userfile
        ./$botscript
        exit 0
      else
        # Well, nothing to work with...
        echo "No userfile.  Could not reload the bot..."
        echo "no userfile" > CANTSTART.$botname
        exit 1
      fi
    fi
  fi
fi

exit 0
##################################################

nie znam się zbytnio na skryptach .. ale poprostu nie wiem od czego zacząć .. czy skrypt ma sprawdzac przez ps czy pid który jest zapisany w pliku jest taki sam w uruchomionych procesach ?? i czy wogóle istnieje?? czy na tym mam bazować ?
skrypt miałby uruchamiac proces gdyby pid nie zgadzał sie z pid zapisanym w pliku
a gdyby sie zgadzał. skrypt by nic nie zrobił
skrypt miałby by byc uruchamiany przez crontab
i czy warto robic to w bashu?/ moze zacząć kombinowac w perlu?