[OpenSuse 10.2] init.d script vraag

Pagina: 1
Acties:
  • 286 views sinds 30-01-2008
  • Reageer

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 27-01 15:56
Ik heb voor het eerst een init.d script geschreven om een bepaalde applicatie automatisch te laten starten tijdens boot. Ik heb echter 2 problemen:
- Het starten van de appliactie gaat fout aangezien de applicatie niet als root gestart mag worden
- Als ik de applicatie start via de runlevel editor in yast geeft hij wel een error melding (Ninan should NOT run as root!) maar de `enabled` status staat daarna wel op yes

Nu zijn mijn vragen:
- Hoe start ik een applicatie in bash als een normale gebruiker ipv als root?
- Hoe zorg ik ervoor dat de enabled status niet op yes komt te staan als ik bepaalde feedback krijg.

Alvast bedankt voor de hulp.

ps: Ik heb 0.1% programmeerkennis, be gentle ;)


Edit: paar kleine wijzigingen aangebracht aan het 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
#!/bin/sh
#
# /etc/init.d/ninan
#

DESC="Usenet Client"
NAME=Ninan
SCRIPTNAME=/etc/init.d/ninan
DIR=/home/lmolenaar/ninan-1.1.3
USER=lmolenaar
ACTIVE=`ps -A | grep ninan`

#
#   Function that starts the service.
#
s_start() {
    
    if [ ACTIVE = ninan ]
    then
        echo "Ninan is already running"
    elif
        cd $DIR &&
        su $USER 
        nohup ninancore.sh &
    fi
}

#
#   Function that stops the service.
#
s_stop() {
    if [ ACTIVE = ninan ]
    then
        cd $DIR &&
        su $USER 
        ninanstop.sh
    elif
        echo "Ninan is already stopped"
    fi      
}

case "$1" in
  start)
    echo -n "Starting $DESC: $NAME"
    s_start
    rc_status -v
    ;;
  stop)
    s_Stop
    rc_status -v
    ;;
  restart)
    echo -n "Restarting $DESC: $NAME"
    s_stop
    sleep 2
    s_start
    rc_status -v
    ;;
  *)
  
echo "Usage: ninan {start|stop|restart}"

esac

rc_exit

[ Voor 44% gewijzigd door Simkin op 21-09-2007 14:35 ]


  • cherwin
  • Registratie: Maart 2006
  • Niet online
Nou met het bovenstaande script krijg je door jouw if-statements een error, ik was bezig met een aantal aanpassingen maar je hebt het ondertussen alweer veranderd. Als je een momentje hebt dan post ik de aangepaste versie.

ik heb 'su' veranderd naar 'sudo' en een aantal sanity checks erbij toegevoegd

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
#!/bin/sh
#
# /etc/init.d/ninan
#

DESC="Usenet Client"
NAME=Ninan
SCRIPTNAME=/etc/init.d/ninan
DIR=/home/lmolenaar/ninan-1.1.3
USER=lmolenaar

#
#   Sanity checks
#
for var in "$SCRIPTNAME" "$DIR"
do
    if [ ! -e "$var" ]
    then
        echo "ERROR: \""$var"\" does not exist"
        exit 1
    fi
done

if ! grep $USER /etc/passwd > /dev/null
then
    echo "ERROR: \""$USER"\" does not exist"
fi

#
#    Function that starts the service.
#
s_start() {
    cd $DIR &&
    sudo -u $USER nohup ninancore.sh &
}

#
#    Function that stops the service.
#
s_stop() {
    cd $DIR &&
    sudo -u $USER ninanstop.sh
}

case "$1" in
  start)
    echo -n "Starting $DESC: $NAME"
    s_start
    rc_status -v
    ;;
  stop)
    s_Stop
    rc_status -v
    ;;
  restart)
    echo -n "Restarting $DESC: $NAME"
    s_stop
    sleep 2
    s_start
    rc_status -v
    ;;
  *)
  
echo "Usage: ninan {start|stop|restart}"

esac

rc_exit

De code om te kijken of jouw script al actief is kan je zelf wel kloppen zo te zien :)

[ Voor 73% gewijzigd door cherwin op 21-09-2007 14:52 ]

Tell me your problem, not the solution you think I should build for you.


  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 27-01 15:56
Dankjewel cherwin, ik ga het zometeen proberen! Laat straks weten of het allemaal gelukt is.
Bedankt voor de hulp!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 01-02 13:45

deadinspace

The what goes where now?

Wat voor programma is ninan? Wat doet het? Is het een daemon, of niet? Waarom wil je het laten starten bij het booten?

  • laurencevde
  • Registratie: November 2001
  • Laatst online: 02-10-2025
Gewoonlijk wordt hier start-stop-daemon voor gebruikt.

Have a taste of freedom. It is sometimes a bitter pill. To me though, this is the sweetness of the GPL


  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 27-01 12:55

Bergen

Spellingscontroleur

deadinspace schreef op vrijdag 21 september 2007 @ 17:45:
Wat voor programma is ninan? Wat doet het? Is het een daemon, of niet? Waarom wil je het laten starten bij het booten?
http://sourceforge.net/projects/ninan/

NINAN, a webapplication to download binary content from news servers. Ninan Supports the nzb file format for easy download and runs on a server or workstation on a OS supporting java 1.4+

En inderdaad, de start-stop-daemon is hiervoor ontworpen.

[ Voor 6% gewijzigd door Bergen op 22-09-2007 02:44 ]

Pagina: 1