Autor |
Sõnum |
naps
Pingviini aktivist
Liitunud: 12.11.2005
Postitused: 133
|
|
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: apache2
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop apache2 web server
### END INIT INFO
#
# apache2 This init.d script is used to start apache2.
# It basically just calls apache2ctl.
ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"
#[ `ls -1 /etc/apache2/sites-enabled/ | wc -l | sed -e 's/ *//;'` -eq 0 ] && \
#echo "You haven't enabled any sites yet, so I'm not starting apache2." && \
#echo "To add and enable a host, use addhost and enhost." && exit 0
#edit /etc/default/apache2 to change this.
HTCACHECLEAN_RUN=auto
HTCACHECLEAN_MODE=daemon
HTCACHECLEAN_SIZE=300M
HTCACHECLEAN_DAEMON_INTERVAL=120
HTCACHECLEAN_PATH=/var/cache/apache2/mod_disk_cache
HTCACHECLEAN_OPTIONS=""
set -e
. /lib/lsb/init-functions
if [ -x /usr/sbin/apache2 ] ; then
HAVE_APACHE2=1
else
echo "No apache MPM package installed"
exit 0
log_failure_msg "No apache MPM package installed"
exit 6
fi
. /lib/lsb/init-functions
test -f /etc/default/rcS && . /etc/default/rcS
test -f /etc/default/apache2 && . /etc/default/apache2
APACHE2CTL="$ENV /usr/sbin/apache2ctl"
HTCACHECLEAN="$ENV /usr/sbin/htcacheclean"
check_htcacheclean() {
[ "$HTCACHECLEAN_MODE" = "daemon" ] || return 1
[ "$HTCACHECLEAN_RUN" = "yes" ] && return 0
[ "$HTCACHECLEAN_RUN" = "auto" \
-a -e /etc/apache2/mods-enabled/disk_cache.load ] && return 0
return 1
}
start_htcacheclean() {
$HTCACHECLEAN $HTCACHECLEAN_OPTIONS -d$HTCACHECLEAN_DAEMON_INTERVAL \
-i -p$HTCACHECLEAN_PATH -l$HTCACHECLEAN_SIZE
}
stop_htcacheclean() {
killall htcacheclean 2> /dev/null || echo ...not running
}
pidof_apache() {
# if pidof is null for some reasons the script exits automagically
# classified as good/unknown feature
# the "|| true" inside of the shell call seems to help
PIDS=`pidof apache2 || true`
PFILE=`. /etc/apache2/envvars ; echo $APACHE_PID_FILE`
if [ -z "$PFILE" ] ; then
log_failure_msg "ERROR: APACHE_PID_FILE needs to be defined in /etc/apache2/envvars"
exit 2
fi
[ -e $PFILE ] && PIDS2=`cat $PFILE`
# if there is a pid we need to verify that belongs to apache2
# for real
for i in $PIDS; do
if [ "$i" = "$PIDS2" ]; then
# in this case the pid stored in the
# pidfile matches one of the pidof apache
# so a simple kill will make it
echo $i
return 0
fi
done
return 1
}
apache_stop() {
if `$APACHE2CTL configtest > /dev/null 2>&1`; then
# if the config is ok than we just stop normaly
$APACHE2CTL graceful-stop
else
# if we are here something is broken and we need to try
# to exit as nice and clean as possible
PID=$(pidof_apache)
if [ "${PID}" ]; then
# in this case it is everything nice and dandy
# and we kill apache2
log_warning_msg "We failed to correctly shutdown apache, so we're now killing all running apache processes. This is almost certainly suboptimal, so please make sure your system is working as you'd expect now!"
kill $PID
elif [ "$(pidof apache2)" ]; then
if [ "$VERBOSE" != no ]; then
echo " ... failed!"
echo "You may still have some apache2 processes running. There are"
echo "processes named 'apache2' which do not match your pid file,"
echo "and in the name of safety, we've left them alone. Please review"
echo "the situation by hand."
fi
return 1
fi
fi
}
# Stupid hack to keep lintian happy. (Warrk! Stupidhack!).
case $1 in
start)
log_daemon_msg "Starting web server" "apache2"
if $APACHE2CTL start; then
if check_htcacheclean ; then
log_progress_msg htcacheclean
start_htcacheclean || log_end_msg 1
fi
log_end_msg 0
else
log_end_msg 1
fi
;;
stop)
if check_htcacheclean ; then
log_daemon_msg "Stopping web server" "htcacheclean"
stop_htcacheclean
log_progress_msg "apache2"
else
log_daemon_msg "Stopping web server" "apache2"
fi
if apache_stop; then
log_end_msg 0
else
log_end_msg 1
fi
;;
status)
if pidof_apache >/dev/null; then
log_success_msg "Apache is running."
exit 0
else
log_failure_msg "Apache is not running."
exit 1
fi
;;
reload | force-reload)
if ! $APACHE2CTL configtest > /dev/null 2>&1; then
$APACHE2CTL configtest || true
log_end_msg 1
exit 1
fi
log_daemon_msg "Reloading web server config" "apache2"
if pidof_apache > /dev/null ; then
if $APACHE2CTL graceful $2 ; then
log_end_msg 0
else
log_end_msg 1
fi
fi
;;
restart)
if check_htcacheclean ; then
log_daemon_msg "Restarting web server" "htcacheclean"
stop_htcacheclean
log_progress_msg apache2
else
log_daemon_msg "Restarting web server" "apache2"
fi
if ! apache_stop; then
log_end_msg 1 || true
fi
sleep 10
if $APACHE2CTL start; then
if check_htcacheclean ; then
start_htcacheclean || log_end_msg 1
fi
log_end_msg 0
else
log_end_msg 1
fi
;;
start-htcacheclean)
log_daemon_msg "Starting htcacheclean"
start_htcacheclean || log_end_msg 1
log_end_msg 0
;;
stop-htcacheclean)
log_daemon_msg "Stopping htcacheclean"
stop_htcacheclean
log_end_msg 0
;;
*)
log_success_msg "Usage: /etc/init.d/apache2 {start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean|status}"
exit 1
log_success_msg "Usage: /etc/init.d/apache2 {start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean|status}"
exit 3
;;
esac
|
|
|
|
|
|
|
|
spott
Admin
Vanus: 43
Liitunud: 04.06.2005
Postitused: 8857
Distributsioon: Ubuntu
|
|
|
|
naps
Pingviini aktivist
Liitunud: 12.11.2005
Postitused: 133
|
|
Sest näidata, et kommuuni poolt on paljud tobedad *buntu vead ammu parandatud aga ametlikke bache ei tule kusagilt. See igast otsast logisemine ajab juba närvi! Võibolla mõnel veel on vaja scripte (programme) kirjutada kus on nõutav teada kas mingi service töötab või mitte? Ja miks ma pean lahenduse enda teada hoidma? Peaks kuhugi *butu 8.04 bachide nurgakese tegema. Hetkel on mul neid kokku korjatud mingi natuke alla 200. Uskumatu kui hooletult mehed tööd teevad!
|
|
|
|
|
|
|
|
naps
Pingviini aktivist
Liitunud: 12.11.2005
Postitused: 133
|
|
Hea meelega tahaks kõik initscriptid "status" omadusega ära parandada mis on äärmiselt vajalik ja reeglitega lausa nõutav!!! Mis me saame vastuseks käsule: /etc/init.d/bind9 status ? Kus on bach? Miks ültse sellised elementaarsed vead veel eksisteerivad?!
|
|
|
|
|
|
|
|
priit
Vana Pingviin
Vanus: 40
Liitunud: 04.08.2005
Postitused: 521
Asukoht: Tartu
Distributsioon: CentOS / OS X
|
|
naps kirjutas: | Hea meelega tahaks kõik initscriptid "status" omadusega ära parandada mis on äärmiselt vajalik ja reeglitega lausa nõutav!!! Mis me saame vastuseks käsule: /etc/init.d/bind9 status ? Kus on bach? Miks ültse sellised elementaarsed vead veel eksisteerivad?! |
[ot&rant] Bach on arvatavasti Leipzigis mulla all edasi. Õige sõna oleks "patch". Miks sul üldse elementaarsed kirjavead tekivad... [/ot&rant]
Oma skripti asemel oleksid võinud lisada diff faili või siis selgitada, mida sa tegid ning miks.
Mul nt ei ole init.d kausta, samuti ei ole mul kusagil bind9 faili, aga see selleks.
|
|
|
|
|
|
|
|
naps
Pingviini aktivist
Liitunud: 12.11.2005
Postitused: 133
|
|
Vabandust kirjavigadepärast. Diffi ei oska kasutada kahjuks (õpetus oleks teretulnud). Oskan küll kaht faili võrrelda aga kuidas seda diff faili pärast originaalile selga lasta (pachida) ei oska. Mul siin selline emane klaver kah, et istu mõnele nupule või kahe jalaga peale!
See seleks aga bind9 saab "status" tekitada kui lisada:
#################################################################
;;
status)
pidofproc -p /var/run/bind/run/named.pid /usr/sbin/named bind9 >/dev/null
status=$?
if [ $status -eq 0 ]; then
log_success_msg "BIND is running"
else
log_failure_msg "BIND is not running"
fi
exit $status
;;
*)
log_action_msg "Usage: /etc/init.d/bind9 {start|stop|reload|restart|force-reload|status}"
exit 1
;;
#####################################################################
Tnx
Muideks kas teistel distrotel on initscriptidega sama jama, et "status" puudub!?
Mõtlesin, et ainult Debiani baasil distrotel on see jama.
|
|
|
|
|
|
|
|
mihkel
Vana Pingviin
Liitunud: 16.04.2006
Postitused: 1284
Distributsioon: Fedora/Centos
|
|
Mis jama?
Jama oleks siis, kui skriptid plämast kuhjatud oleks. Protsessi kohta saab infot ps käsuga.
|
|
|
|
|
|
|
|
priit
Vana Pingviin
Vanus: 40
Liitunud: 04.08.2005
Postitused: 521
Asukoht: Tartu
Distributsioon: CentOS / OS X
|
|
naps kirjutas: | Muideks kas teistel distrotel on initscriptidega sama jama, et "status" puudub!? Mõtlesin, et ainult Debiani baasil distrotel on see jama. |
Archil ei tundu olevat, mitte, et ma sest puudust tunneksin. Aga oskad sa viidata, kus on kirjas, et see on nõutav?
Diffi kasutamine on imelihtne: sul on kaks faili, mis on erinevad, annad käsu (esimene on algfail, teine on muudetud fail):
Kood: | diff fail1 fail2 > erinevus.diff |
Tekib diff fail, mis sisaldab endas infot nende kahe faili erinevuse kohta. Lihtsustatult võibki öelda, et see on patch. Faili fail1 saad fail2-ga identseks muuta käsuga:
Kood: | patch fail1 erinevus.diff |
Ja ning annavad piisavalt infot.
|
|
|
|
|
|
|
|
obundra
Vana Pingviin
Vanus: 50
Liitunud: 04.08.2005
Postitused: 1213
Asukoht: 127.0.0.1
Distributsioon: RHEL, Solaris, Debian, Gentoo
|
|
Ma ka ei saa aru, et miks protsessi staatust initskripti abil peaks küsitama.See vaatab ju üldjuhul ainult seda kas /var/run/mingiprotsess.pid on olemas.Aga kui protsess on maha koolend miskil anomaalsel põhjusel, siis ta ju pid faili enda järelt ära ei korista.Ja siis ongi initskripti antav vastus eksitav.Ilmselt seepärast ongi see funktsioon tänapäeva initskriptidest välja roogitud, olgu Pingu tänatud . Palju mõistlikum on protsessi olemasolu ps abil kontrollida nagu juba eelpool mainiti.Iseasi, kui see funktsioon ps baasil sinna skripti sisse kirjutada.
|
|
|
|
_________________ IT teenused
|
|
|
|
|