Zum Starten eines Services besitzt jeder Service ein Start-/Stop-Skript im Verzeichnis /etc/init.d. Jedes Skripte enthält spezifische Befehle, um den Service zu starten bzw. zu beenden.
Die Skripte werden normalerweise beim Start des Linux Systems automatisch ausgeführt. Jedoch können die Skripte auch von Hand aufgerufen werden. Beim händischen Aufruf des Start-/Stop-Skript wird die angehangene Option selektiv ausgeführt.
Eigenes Start-/Stop-Skript erstellen
Im allgemeinen kann man den Aufbau des Skriptes in drei Teile aufsplittet:
- den Header (Desktiption und den Anweisungen für chkconfig)
- des Testroutinen und den Pfadvorgaben
- den eigentlichen Anweisungen wie z.B. start, stop, reload usw.
Der Header eines Start-/Stop-Skriptes
Die erstem Werte nach dem Befehl chkconfig beinhalten die Informationen, in welchen Run-Level der Service gestartet werden soll. Im Beispiel für den Service NTP werden die folgenden Parameter hinterlegt:
- Run-Level - 2345
- Dienst Start-Nummer - 58
- Dienst Kill-Nummer - 74
Start-, Stop- und Reload-Anweisungen
Mit dem Dateinamen ntpd wird diese im Verzeichnis /etc/init.d/abgelegt werden. Eingebunden und aktiviert wird das frisch erstellt Init-Skript für NTP mit den folgenden 2 Befehlen:
- chkconfig --all ntpd (liest die angegebenen Run-Livel aus dem Init-Skript aus und aktiviert diese)
- service ntpd start (initiales starten des Dienstes)
Konfigurationsbeispiel: ntpd.initd
#!/bin/bash
#
# ntpd This shell script takes care of starting and stopping
# ntpd (NTPv4 daemon).
#
# chkconfig: 2345 58 74
# description: ntpd is the NTPv4 daemon. \
# The Network Time Protocol (NTP) is used to synchronize the time of \
# a computer client or server to another server or reference time source, \
# such as a radio or satellite receiver or modem.
# Source function library.
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
if [ -f /etc/sysconfig/ntpd ];then
. /etc/sysconfig/ntpd
fi
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0
# Script Config
NTPD_BIN="/usr/sbin/ntpd"
NTPD_CONF="/etc/ntpd/ntpd.conf"
PID_FILE="/var/run/ntpd/ntpd.pid"
NTPD_LOG="/var/log/ntpd.log"
# TMPDIR must be writeable
export TMPDIR="/var/tmp"
# See how we were called
case "$1" in
start)
if [ ! -f ${NTPD_CONF} ]; then
echo -n >&2 "ntpd configuration file, ${NTPD_CONF} does not exist. "
exit 6
fi
echo -n "Starting ntpd :"
# ${PID_FILE} ${NTPD_BIN} -g -c ${NTPD_CONF} -l ${NTPD_LOG}
daemon ${NTPD_BIN} -g -c ${NTPD_CONF} -l ${NTPD_LOG} -p ${PID_FILE}
echo
;;
stop)
echo -n "Shutting down ntpd :"
killproc ntpd
echo
;;
condrestart)
[ -f /var/lock/subsys/ntpd ] && restart || :
;;
restart)
$0 stop
$0 start
;;
force-reload|reload)
echo -n "ntp new reloading :"
kill -HUP `cat ${PID_FILE}`
exit $?
;;
status)
status ntpd
exit $?
;;
probe)
test ${NTPD_CONF} -nt ${PID_FILE} && echo reload
;;
*)
echo "Usage: $0 {start|stop|status|condrestart|restart|force-reload|reload|probe}"
exit 1
;;
esac