Создание 2-ух демонов, ссылающихся на один и тот же объект, но с разным конфигом.
Как в openSUSE (init.d rc) создать 2 deamon-а mpd и radio на 1 и тот же объект /usr/bin/mpd но с разными конфигами, логами и pid-файлами, что бы можно было независимо управлять ими (запускать перезапускать и останавливать без влияния друг на друга) ?
Написал 2 демона: /etc/init.d/mpd
#! /bin/sh
#
# Author: Davide Lucchesi <odiobill@despammed.com>, 2003
#
# /etc/init.d/mpd
#
# and its symbolic link
#
# /usr/sbin/rcmpd
#
# System startup script for the Music Player Daemon.
#
### BEGIN INIT INFO
# Provides: mpd
# Required-Start: $network $remote_fs
# Should-Start: alsasound icecast
# Required-Stop: $network
# Should-Stop: alsasound icecast
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: This script takes care of managing the Music Player Daemon
### END INIT INFO
. /etc/rc.status
# Reset status of this service
rc_reset
MPD_BIN="/usr/bin/mpd"
MPD_CFG="/etc/mpd.conf"
MPD_PID="/var/lib/mpd/mpd.pid"
test -x $MPD_BIN || {
echo "$MPD_BIN not installed";
if [ "$1" = "stop" ] ; then
exit 0
else
exit 5
fi
}
case "$1" in
start)
echo -n "Starting mpd "
startproc $MPD_BIN $MPD_CFG
rc_status -v
;;
stop)
test -e $MPD_PID || {
echo "$MPD_PID doesn't exist!"
exit 0
}
echo -n "Shutting down mpd "
$MPD_BIN --kill
rc_status -v
;;
try-restart)
$0 status
if test $? = 0; then
$0 restart
else
rc_reset
fi
rc_status
;;
restart)
$0 stop
$0 start
rc_status
;;
status)
echo -n "Checking for mpd: "
checkproc $MPD_BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|try-restart|restart|status}"
exit 1
;;
esac
rc_exit
и /etc/init.d/radio
/etc/init.d/radio
#! /bin/sh
#
# Author: Davide Lucchesi <odiobill@despammed.com>, 2003
#
# /etc/init.d/radio
#
# and its symbolic link
#
# /usr/sbin/rcradio
#
# System startup script for the Classic Rock Radio.
#
### BEGIN INIT INFO
# Provides: radio
# Required-Start: $network $remote_fs
# Should-Start: alsasound icecast
# Required-Stop: $network
# Should-Stop: alsasound icecast
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: This script takes care of managing Classic Rock Radio
### END INIT INFO
. /etc/rc.status
# Reset status of this service
rc_reset
BIN="/usr/bin/mpd"
CFG="/etc/radio.conf"
PID="/var/lib/mpd/radio.pid"
test -x $BIN || {
echo "$BIN not installed";
if [ "$1" = "stop" ] ; then
exit 0
else
exit 5
fi
}
case "$1" in
start)
echo -n "Starting Classic Rock Radio "
startproc $BIN $CFG
rc_status -v
;;
stop)
test -e $PID || {
echo "$PID doesn't exist!"
exit 0
}
echo -n "Shutting down Classic Rock Radio "
$BIN --kill
rc_status -v
;;
try-restart)
$0 status
if test $? = 0; then
$0 restart
else
rc_reset
fi
rc_status
;;
restart)
$0 stop
$0 start
rc_status
;;
status)
echo -n "Checking for Classic Rock Radio: "
checkproc $BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|try-restart|restart|status}"
exit 1
;;
esac
rc_exit
Создал конфиги логи пиды стейты, и установил владельца mpd:audio Все необходимые файлы в /var/lib/mpd и /var/log создал, установив владелбцем mpd:audio Через YaST создал демон, установил на запуск в 3 и 5 и запустил, но при запуске одного вылетает другой, и при попытке перезапустить его пишет /var/lib/mpd/radio.pid doesn't exist! Хотя в /var/lib/mpd/ оба пида существуют и права у них 775 mpd:audio
Естественно если /usr/bin/mpd клонировать в /usr/bin/radio и привязать демон radio на него, то всё работает, но для меня это НЕ выход. Это уже НЕ ООП.
В чём проблема и что я не учёл ?