[bglug] Ho bisogno di una mano per uno script

mlpita@bergamo3.it mlpita@bergamo3.it
Mar 31 Ott 2006 16:53:10 CET


Ciao a tutti
Magari c'è qualcuno che ha voglia di darmi una mano con questo script. Io sono 
un neofita di shell scripting e ci sto perdendo la giornata.

Avrei bisogno di uno script da mettere in /etc/init.d da avviare e fermare nei 
vari runlevel che, lanciato con "start" dovrebbe lanciare un job periodico, e 
lanciato con "stop" fermarlo. Lo start dev' essere non bloccante mentre lo 
stop deve bloccare finche non si è fermato.

Mi sto documentando su come potrei fare ma non ci sono ancora riuscito. Nella 
mia idea potrei prendere e memorizzare il PID del "thejob &" con $1 ma non so 
come memorizzarlo tra successive chiamate dello script...
Preferirei evitare di creare dei file .pid etc etc perchè non si sa mai cosa 
succede in caso di interruzione dell' alimentazione (i file rimangono ed al 
riavvio lo script crede che stai ancora girando).

Allego uno pseudo codice che fa capire cosa vorrei fare
Ciao, Diego

-------------------------------------------------
#!/bin/bash

thejob()
{
	while [ ! condizione di uscita ]
	do
		run my periodic command
		sleep 60
	done
}


startthejob()
{
	se thejob non sta girando
		thejob &
		return 0
	altrimenti
		return 1
}

killthejob()
{
	se thejob sta girando
		uccidi thejob (o segnala condizione di uscita)
		attendi che thejob sia morto
		return 0
	altrimenti
		return 1
}

start()
{
	return startthejob
}

stop()
{	
	return stopthejob
}


# See how we were called.
case "$1" in
    start)
		start
	;;
    stop)
		stop
	;;
     *)
		echo $"Usage: $0 {start|stop}"
	;;
esac

exit $?


Maggiori informazioni sulla lista bglug