[Comm] startproc и killproc

=?iso-8859-1?q?unnamedartist_=CE=C1_mail=2Eru?= =?iso-8859-1?q?unnamedartist_=CE=C1_mail=2Eru?=
Вт Сен 25 11:54:24 MSD 2007


> Здравствуйте unnamedartist на mail.ru
>   В сообщении от Вторник 25 сентября 2007 unnamedartist на mail.ru 
> написал(a):
>  > > On Mon, Sep 24, 2007 at 12:00:37PM +0400, unnamedartist на mail.ru 
> wrote:
>  > > > Здравствуйте, подскажите, в каких пакетах в ALTLinux Desktop 4.0
>  > > > содержаться startproc и killproc
>  > >
>  > > Зачем они вам?
>  >
>  > У нас просто написано куча стартовых сценариев для собственных
>  > программ с использованием startproc и killproc.
> А эммулировать их скриптом никак нельзя ?
> 
> PS Совершенно не представляю что это, сужу только по названию.
> -- 

Там очень простые вещи, просто из всего бюро на ALT сижу только я, у других SUSE, поэтому я если буду делать свою часть, мне надо чтобы на их машинах они тоже работали.
 
Вот пример, одного из таких сценариев:
#! /bin/sh
#
#---------------------------------------------------------
# Version 1.2 by Igor Kandalov, <ikandalov на mail.ru>
#---------------------------------------------------------
# Control script for KVL PI data acquisition subsystem
#---------------------------------------------------------
# Usage: start - start subsystem
#        stop  - stop  subsystem
#        close - stop  subsystem and shutdown controllers
#        load  - automatic start subsystem from "init"
#---------------------------------------------------------

#---------------------------------------------------------
# Set subsystem directories and files
#---------------------------------------------------------
init_subsystem ()
{
 #--- subsystem directories ------------------------------
  SYS_DIR=/INFOTRANS/SYSTEM
  LOG_DIR=/INFOTRANS/LOG
  CFG_DIR=/INFOTRANS/CONFIG
 #-----
  test -d $LOG_DIR      || mkdir $LOG_DIR
  test -d $LOG_DIR/LOG0 || mkdir $LOG_DIR/LOG0
  test -d $LOG_DIR/LOG1 || mkdir $LOG_DIR/LOG1
 #--- IP addresses ---------------------------------------
  K020_IP=192.168.0.75
  K021_IP=192.168.0.76
  K022_IP=192.168.0.77
  K023_IP=192.168.0.78
 #-----
  K000_IP=192.168.0.79
 #-----
  CMD0_IP=192.168.0.70
  CMD1_IP=192.168.0.72
  CMD2_IP=192.168.0.75
 #--- delay for connect to remote controller -------------
  START_DELAY=5
  STOP_DELAY=2
  CLOSE_DELAY=2
 #--- software of 0-th level controller ------------------
  SERVER_0=$SYS_DIR/server
  LOGGER_0=$SYS_DIR/logger
  DRIVER_0=$SYS_DIR/pci_7200.ko
  CL_SCN_0=$SYS_DIR/client_l0
  CL_ASD_0=$SYS_DIR/client_asd
  PR_ASD_0=$SYS_DIR/processor_asd
 #-----
  test -e $SERVER_0 || { echo " ERROR: File $SERVER_0 not found"; exit 5; }
  test -e $LOGGER_0 || { echo " ERROR: File $LOGGER_0 not found"; exit 5; }
  test -e $DRIVER_0 || { echo " ERROR: File $DRIVER_0 not found"; exit 5; }
  test -e $CL_SCN_0 || { echo " ERROR: File $CL_SCN_0 not found"; exit 5; }
  test -e $CL_ASD_0 || { echo " ERROR: File $CL_ASD_0 not found"; exit 5; }
  test -e $PR_ASD_0 || { echo " ERROR: File $PR_ASD_0 not found"; exit 5; }
 #--- software of 2-nd level controller ------------------
  SERVER_2=$SYS_DIR/server
  LOGGER_2=$SYS_DIR/logger
  DRIVER_2=$SYS_DIR/scan_2800.ko
  CL_SCN_2=$SYS_DIR/client_l2
  HD_SCN_2=$SYS_DIR/processor_l2
 #-----
  test -e $SERVER_2 || { echo " ERROR: File $SERVER_2 not found"; exit 5; }
  test -e $LOGGER_2 || { echo " ERROR: File $LOGGER_2 not found"; exit 5; }
  test -e $DRIVER_2 || { echo " ERROR: File $DRIVER_2 not found"; exit 5; }
  test -e $CL_SCN_2 || { echo " ERROR: File $CL_SCN_2 not found"; exit 5; }
  test -e $HD_SCN_2 || { echo " ERROR: File $HD_SCN_2 not found"; exit 5; }
 #--- controller name ------------------------------------
  CONTROLLER="`cat /etc/HOSTNAME`"
  echo $CONTROLLER > $CFG_DIR/controller.cfg
}

#---------------------------------------------------------
# Start remote controller ($1 - controller IP)
#---------------------------------------------------------
start_remote ()
{
  while [ $START_DELAY -gt 0 ]
   do
     if ssh -q $1 mkdir -p $SYS_DIR    ; then
     if ssh -q $1 mkdir -p $CFG_DIR    ; then
     if scp -qB $SYS_DIR/* $1:$SYS_DIR  ; then
     if scp -qB $CFG_DIR/* $1:$CFG_DIR  ; then
     if ssh -q $1 $SYS_DIR/control start remote ; then
       #echo " Start remote  controller - $1"
       break
     fi
     fi
     fi
     fi
     fi
     echo " Remote controller $1 not found"
     sleep 1
     let "START_DELAY-=1"
   done
  let "START_DELAY+=2"
  sleep 5
}

#---------------------------------------------------------
# Stop remote controller ($1 - controller IP)
#---------------------------------------------------------
stop_remote ()
{
  while [ $STOP_DELAY -gt 0 ]
   do
     if ssh -q $1 $SYS_DIR/control stop remote ; then
       #echo " Stop  remote controller - $1"
       break
     fi
     echo " Remote controller $1 not found"
     sleep 1
     let "STOP_DELAY-=1"
   done
  let "STOP_DELAY+=2"
}

#---------------------------------------------------------
# Close remote controller ($1 - controller IP)
#---------------------------------------------------------
close_remote ()
{
  while [ $CLOSE_DELAY -gt 0 ]
   do
     if ssh -q $1 $SYS_DIR/control close remote ; then
       #echo " Close remote controller - $1"
       break
     fi
     echo " Remote controller $1 not found"
     sleep 1
     let "CLOSE_DELAY-=1"
   done
  let "CLOSE_DELAY+=2"
}

#---------------------------------------------------------
# Save Log-files from previous session
#---------------------------------------------------------
save_log ()
{
  mv -f -t $LOG_DIR/LOG1 $LOG_DIR/LOG0/*.log  2> /dev/null
  mv -f -t $LOG_DIR/LOG0 $LOG_DIR/*.log       2> /dev/null
 #----------------------------------
  cat /dev/null > /var/log/infotrans_debug
  cat /dev/null > /var/log/infotrans_errors
  cat /dev/null > /var/log/infotrans_info
  cat /dev/null > /var/log/infotrans_warnings

  cat /dev/null > $LOG_DIR/infotrans_debug
  cat /dev/null > $LOG_DIR/infotrans_errors
  cat /dev/null > $LOG_DIR/infotrans_info
  cat /dev/null > $LOG_DIR/infotrans_warnings
}

#---------------------------------------------------------
# Start 0-th level controller (no arguments)
#---------------------------------------------------------
start_local_0 ()
{
  echo " Start controller - $CONTROLLER"
 #----------------------------------
  insmod $DRIVER_0 cfg_dir=$CFG_DIR log_dir=$LOG_DIR
 #----------------------------------
  startproc -f -q $LOGGER_0 -c $CFG_DIR -l $LOG_DIR
 #----------------------------------
  startproc -f -q $CL_SCN_0 -c $CFG_DIR -l $LOG_DIR -i K020 -o RS01
  startproc -f -q $CL_SCN_0 -c $CFG_DIR -l $LOG_DIR -i K020 -o RS05
  startproc -f -q $CL_SCN_0 -c $CFG_DIR -l $LOG_DIR -i K021 -o RS03
  startproc -f -q $CL_SCN_0 -c $CFG_DIR -l $LOG_DIR -i K021 -o RS07
  startproc -f -q $CL_SCN_0 -c $CFG_DIR -l $LOG_DIR -i K022 -o RS02
  startproc -f -q $CL_SCN_0 -c $CFG_DIR -l $LOG_DIR -i K022 -o RS06
  startproc -f -q $CL_SCN_0 -c $CFG_DIR -l $LOG_DIR -i K023 -o RS04
  startproc -f -q $CL_SCN_0 -c $CFG_DIR -l $LOG_DIR -i K023 -o RS08
  startproc -f -q $CL_ASD_0 -c $CFG_DIR -l $LOG_DIR -i /proc/pci_7200/control -o DASD
  startproc -f -q $PR_ASD_0 -c $CFG_DIR -l $LOG_DIR -i DASD -o RASD -a /proc/pci_7200/control
 #----------------------------------
  startproc -f -q $SERVER_0 -c $CFG_DIR -l $LOG_DIR
}

#---------------------------------------------------------
# Stop 0-th level controller (no arguments)
#---------------------------------------------------------
stop_local_0 ()
{
  echo " Stop  controller - $CONTROLLER"
 #----------------------------------
  killproc $SERVER_0
 #----------------------------------
  killproc $CL_SCN_0
  killproc $PR_ASD_0
  killproc $CL_ASD_0
 #----------------------------------
  killproc $LOGGER_0
 #----------------------------------
  rmmod -f $DRIVER_0
}

#---------------------------------------------------------
# Start 2-nd level controller ($1 - first scanner, $2 - second scanner)
#---------------------------------------------------------
start_local_2 ()
{
  echo " Start controller - $CONTROLLER"
 #----------------------------------
  insmod $DRIVER_2 cfg_dir=$CFG_DIR log_dir=$LOG_DIR
 #----------------------------------
  startproc -f -q $LOGGER_2 -c $CFG_DIR -l $LOG_DIR
 #----------------------------------
  startproc -f -q $CL_SCN_2 -c $CFG_DIR -l $LOG_DIR -i /proc/scan_2800_0/control -o DS$1
  startproc -f -q $CL_SCN_2 -c $CFG_DIR -l $LOG_DIR -i /proc/scan_2800_1/control -o DS$2
 #----------------------------------
  startproc -f -q $HD_SCN_2 -c $CFG_DIR -l $LOG_DIR -i DS$1 -o RS$1
  startproc -f -q $HD_SCN_2 -c $CFG_DIR -l $LOG_DIR -i DS$2 -o RS$2
 #----------------------------------
  startproc -f -q $SERVER_2 -c $CFG_DIR -l $LOG_DIR
}

#---------------------------------------------------------
# Stop 2-nd level controller (no arguments)
#---------------------------------------------------------
stop_local_2 ()
{
  echo " Stop  controller - $CONTROLLER"
 #----------------------------------
  killproc $SERVER_2
 #----------------------------------
  killproc $HD_SCN_2
 #----------------------------------
  killproc $CL_SCN_2
 #----------------------------------
  killproc $LOGGER_2
 #----------------------------------
  rmmod -f $DRIVER_2
}

#---------------------------------------------------------
# Start subsystem (no arguments)
#---------------------------------------------------------
start_subsystem ()
{
  save_log
  case "$CONTROLLER" in
    K020) start_local_2  01 05    ;;
    K021) start_local_2  03 07    ;;
    K022) start_local_2  02 06    ;;
    K023) start_local_2  04 08    ;;
    K000)
#          start_remote $K020_IP
          start_remote $K021_IP
#          start_remote $K022_IP
#          start_remote $K023_IP
          start_local_0         ;;
    *)    echo " ERROR: Wrong controller name - $CONTROLLER";  exit 1  ;;
  esac
}

#---------------------------------------------------------
# Stop subsystem (no arguments)
#---------------------------------------------------------
stop_subsystem ()
{
  case "$CONTROLLER" in
    K020) stop_local_2         ;;
    K021) stop_local_2         ;;
    K022) stop_local_2         ;;
    K023) stop_local_2         ;;
    K000)
#          stop_remote $K020_IP
          stop_remote $K021_IP
#          stop_remote $K022_IP
#          stop_remote $K023_IP
          stop_local_0         ;;
    *)    echo " ERROR: Wrong controller name - $CONTROLLER";  exit 1  ;;
  esac
}

#---------------------------------------------------------
# Close subsystem (no arguments)
#---------------------------------------------------------
close_subsystem ()
{
  case "$CONTROLLER" in
    K020) stop_local_2 ; halt  ;;
    K021) stop_local_2 ; halt  ;;
    K022) stop_local_2 ; halt  ;;
    K023) stop_local_2 ; halt  ;;
    K000)
#          close_remote $K020_IP
          close_remote $K021_IP
#          close_remote $K022_IP
#          close_remote $K023_IP
          stop_local_2 ; halt  ;;
    *)    echo " ERROR: Wrong controller name - $CONTROLLER";  exit 1  ;;
  esac
}

#---------------------------------------------------------
# Load subsystem (no arguments)
#---------------------------------------------------------
load_subsystem ()
{
  if [ "$CONTROLLER" = "K000" ] ; then
  if [ ! ping -c 3 $CMD0_IP ]   ; then
  if [ ! ping -c 3 $CMD1_IP ]   ; then
  if [ ! ping -c 3 $CMD2_IP ]   ; then
    start_subsystem
  fi
  fi
  fi
  fi
}

#---------------------------------------------------------
# Execute control script
#---------------------------------------------------------
  test $2 || echo "----------------------------------------------------"
  test $2 || echo " KVL_PI version 1.2. Subsystem action: $1 "
  test $2 || echo "----------------------------------------------------"
  init_subsystem
  case "$1" in
      start) start_subsystem  ;;
      stop)  stop_subsystem   ;;
      close) close_subsystem  ;;
      load)  load_subsystem   ;;
      *)     echo " ERROR: Wrong subsystem action - $1";  exit 1  ;;
  esac
  test $2 || echo "----------------------------------------------------"
#  echo "---- $1 --- $2 ---"
  exit 0


  




Подробная информация о списке рассылки community