[Ubuntu] Darkice als daemon instellen

Pagina: 1
Acties:

Onderwerpen


  • TNW
  • Registratie: Januari 2007
  • Laatst online: 22-07 17:58
Ik ben nu een aantal dagen bezig een server te bouwen op basis van Ubuntu 8.10 Server. Deze server gaat een WinXP bak die nu als "server" draait vervangen.

Deze server moet een aantal standaard dingen doen, nl SSH, HTTP, FTP, MySQL en PHP. Het installeren hiervan levert verder geen problemen op.

Een van de functionaliteiten van mijn server is het apart streamen van 2 line-in's van geluidskaarten. Dit heb ik nu al werkend mbv Darkice en Icecast2.
Ik wil echter zorgen dat er twee instances van Darkice als daemon draaien. Dit omdat het de manier zou moeten zijn om deze software automatisch op te starten bij het booten en ik ook vanaf de commandline de daemons kan stoppen als ik bijvoorbeeld iets anders moet configureren.

Ik vond een pagina over het instellen van Darkice als daemon op Debian, maar op Ubuntu lukt het niet. De daemon geeft geen errors, maar ik zie Darkice niet terug in de lijst met processes. De instructies voor het creeëren van de daemon heb ik van: http://girasoli.org/?p=120=1

Zie ik iets over het hoofd? En zijn er ook andere manieren om automatisch twee instances van Darkice op te starten tijdens het booten? Of moet er toch liever een daemon zijn?

Weblog | Straling!


Verwijderd

Als je update-rc.d nog niet kent, zou ik hier eens kijken.

Hiermee heb ik in Ubuntu 8.10 Desktop enkele services werkend gekregen.

  • TNW
  • Registratie: Januari 2007
  • Laatst online: 22-07 17:58
Ik weet wat update-rc.d doet, het probleem is dat Darkice geen daemon heeft als je het vanuit de source bouwt. Dat heb ik moeten doen om mp3 support te krijgen. Als je via apt-get deze software binnenhaalt zal er wel een daemon bij zitten, maar dat weet ik niet zeker.

Weblog | Straling!


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Waarom niet met apt-get installeren en dan het scriptje dat hem als daemon draait even jatten?

i3 + moederbord + geheugen kopen?


Verwijderd

TNW schreef op donderdag 12 februari 2009 @ 21:40:
Ik weet wat update-rc.d doet, het probleem is dat Darkice geen daemon heeft als je het vanuit de source bouwt. Dat heb ik moeten doen om mp3 support te krijgen. Als je via apt-get deze software binnenhaalt zal er wel een daemon bij zitten, maar dat weet ik niet zeker.
Als je weet wat update-rc.d doet, waarom lukt het dan niet?

Je kan gewoon een bestandje aanmaken in init.d met de naam darkice en als inhoud de code die je nodig hebt om de service te starten. Daarna draai je update-rc.d met de juiste instellingen om dit op de juiste runlevels te laten starten en stoppen.

Acties:
  • 0 Henk 'm!

  • TNW
  • Registratie: Januari 2007
  • Laatst online: 22-07 17:58
Verwijderd schreef op donderdag 12 februari 2009 @ 22:09:
[...]

Als je weet wat update-rc.d doet, waarom lukt het dan niet?

Je kan gewoon een bestandje aanmaken in init.d met de naam darkice en als inhoud de code die je nodig hebt om de service te starten. Daarna draai je update-rc.d met de juiste instellingen om dit op de juiste runlevels te laten starten en stoppen.
Hoe moet die code eruit zien? Ik heb de instructies op die website gevolgd, en het skeleton script in /etc/init.d/ gebruik en deze aangevuld met de correcte parameters. De code in het script werkt echter niet.

Voor de duidelijkheid, er is dus geen script bijgeleverd, en volgensmij is deze ook niet aanwezig in de package die beschikbaar is.

Ik gebruik trouwens het volgende startup script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="darkice_dsp"
NAME=darkice
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="--options args"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test -c /etc/darkice_dsp.cfg -v 0 > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        kill `cat $PIDFILE`
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
        #
        # If the daemon can reload its configuration without
        # restarting (for example, when it is sent a SIGHUP),
        # then implement that here.
        #
        start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
        return 0
}

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  #reload|force-reload)
        #
        # If do_reload() is not implemented then leave this commented out
        # and leave 'force-reload' as an alias for 'restart'.
        #
        #log_daemon_msg "Reloading $DESC" "$NAME"
        #do_reload
        #log_end_msg $?
        #;;
  restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

:

Weblog | Straling!


Acties:
  • 0 Henk 'm!

  • TNW
  • Registratie: Januari 2007
  • Laatst online: 22-07 17:58
Update: heb het al gefixt, zij het niet op een super nette manier. Gewoon een script:

code:
1
2
3
4
#!/bin/bash

darkice -c /etc/darkice/darkice_dsp0.cfg &
darkice -c /etc/darkice/darkice_dsp1.cfg &


Dan script zoals gewoonlijk met update-rc.d toevoegen aan startup.
Het is wel geen daemon maar het werkt wel. Mocht ik configuratie willen veranderen dan kill ik wel gewoon de processes.

Weblog | Straling!


Acties:
  • 0 Henk 'm!

  • lamko
  • Registratie: December 2001
  • Laatst online: 20-10-2024
dr zijn wel websites waar ze heel makkelijk aan de hand van een paar dingen die je opgeeft een opstart script voor je maken.

And this !! Is to go even further beyond!!!

Pagina: 1