[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