Örnek System V Servis Oluşturma
#!/bin/sh
### BEGIN INIT INFO
# Provides: benimservisim
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Benim örnek servisimi başlatır/durdurur
# Description: Bu betik, /usr/local/bin/benimservisim daemon'ını yönetir.
### END INIT INFO
# Betik değişkenleri
DAEMON=/usr/local/bin/benimservisim
DAEMON_ARGS="" # Daemon'a geçilecek argümanlar (varsa)
NAME=benimservisim
DESC="Benim Örnek Servisim"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
RUNASUSER=benimkullanici # Servisi çalıştıracak kullanıcı
# Dağıtıma özgü fonksiyon kütüphanesini yükle
# Debian/Ubuntu:
. /lib/lsb/init-functions
# RHEL/CentOS:
# . /etc/rc.d/init.d/functions
# Yardımcı fonksiyonlar (start-stop-daemon Debian/Ubuntu'da yaygındır)
do_start() {
# start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $RUNASUSER --exec $DAEMON --test > /dev/null || return 1
# start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $RUNASUSER --exec $DAEMON -- $DAEMON_ARGS || return 2
# Alternatif (daha basit, start-stop-daemon yoksa):
if [ -f $PIDFILE ]; then
log_daemon_msg "$DESC zaten çalışıyor" "$NAME"
log_end_msg 0
return 1
fi
log_daemon_msg "$DESC başlatılıyor" "$NAME"
su -s /bin/sh -c "$DAEMON $DAEMON_ARGS & echo \$! > $PIDFILE" $RUNASUSER
log_end_msg $?
}
do_stop() {
# start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
# RETVAL="$?"
# [ "$RETVAL" = 2 ] && return 2
# start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
# [ "$?" = 2 ] && return 2
# rm -f $PIDFILE
# return "$RETVAL"
# Alternatif (daha basit):
if [ ! -f $PIDFILE ]; then
log_daemon_msg "$DESC zaten durdurulmuş" "$NAME"
log_end_msg 0
return 1
fi
log_daemon_msg "$DESC durduruluyor" "$NAME"
PID=$(cat $PIDFILE)
kill $PID
# kill komutunun başarılı olup olmadığını kontrol et (daha gelişmiş kontrol eklenebilir)
sleep 1 # Durması için biraz bekle
rm -f $PIDFILE
log_end_msg $?
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
status)
# status_of_proc -p $PIDFILE "$DAEMON" "$NAME" && exit 0 || exit $?
# Alternatif (daha basit):
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE)
if ps -p $PID > /dev/null; then
log_daemon_msg "$DESC çalışıyor (PID $PID)" "$NAME"
log_end_msg 0
exit 0
else
log_daemon_msg "$DESC çalışmıyor ama PID dosyası ($PIDFILE) mevcut" "$NAME"
log_end_msg 1
exit 1
fi
else
log_daemon_msg "$DESC çalışmıyor" "$NAME"
log_end_msg 3
exit 3
fi
;;
restart|force-reload)
log_daemon_msg "$DESC yeniden başlatılıyor" "$NAME"
do_stop
# Durması için biraz bekle
sleep 1
do_start
;;
*)
echo "Kullanım: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
exit 0Last updated