problem s ukoncovanim rc scriptu v jailu pri rebootu

Miroslav Lachman 000.fbsd at quip.cz
Sat Dec 15 14:03:55 CET 2007


Mam tu nasledujici problem, se kterym si nevim rady a tak doufam, ze se 
tu najde nekdo, kdo ma hlubsi znalosti jailu a rc scriptu (moc nevim, 
jak to vlastne debugovat).

Napsal jsem si script, ktery mi pri bootu spousti weby pouzivajici 
Django jako FastCGI. Script v podstate funguje - dokud ho zkousim 
ovladat rucne (v jailu) volanim:
/usr/local/etc/rc.d/django-runfcgi.sh start
a vypinani pres
/usr/local/etc/rc.d/django-runfcgi.sh stop

pripadne spusteni / vypnuti jen konkretniho webu volanim
django-runfcgi.sh start jmenoweb
django-runfcgi.sh stop jmenoweb

Problem je v tom, ze pri rebootu stroje (a tim ukonceni jailu) se ten 
script patrne neprovede jak ma, jelikoz neodstrani pri vypinani PID file 
a tak po rebootu nedojde ke spusteni. Mozne je taky to, ze se script 
provede, ale "neco" se nesyncne spravne na filesystem, tomu uz ja moc 
nerozumim.

Data k jednotlivym webum se nacitaji z konfiguracniho souboru i kdyz by 
stejne tak mohly byt primo v rc.conf (podobne, jako je tomu u 
konfigurace jailu

Funkce pro vypinani v tom rc scriptu vypada nasledovne:

django_runfcgi_stop()
{
	echo -n "Stoping django fcgi sites: "
	
	for site in ${django_sites}
	do
		eval _user=\$django_${site}_user
		eval _dir=\$django_${site}_dir
		eval _conf=\$django_${site}_conf
		
		if [ -d "${_dir}" ]; then
			
			cd "${_dir}"
			_pidfile="${_dir}/tmp/django-fcgi.pid"
			
			if [ -r "${_pidfile}" ]; then
				echo " "
				_pid=`cat "${_pidfile}"`
				su "${_user}" -c "kill ${_pid} && rm ${_pidfile} && echo -n ${site} "
				echo -n " "
			else
				print_debug "PID file does not exists: ${_pidfile}"
			fi
		else
			print_debug "directory does not exists: ${_dir}"
		fi
	done
	
	echo
}


Hlavni otazka tedy zni - jak zjistit, co se tam deje pri tom vypinani 
jailu? Bohuzel to standardne nikam nic nevypisuje / neloguje. Je tedy 
nejaka moznost, jak zapnout nejake logovani zpracovani ukonceni vsech rc 
scriptu v jailu?

Mirek



More information about the Users-l mailing list