Commando uitvoeren bij het opstarten

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
Bij het opstarten wil ik dit script uitvoeren:

code:
1
2
#! /bin/sh
god -c /rails/scrapers_v1/current/config/development.god


Het script staat in /etc/init.d/worker met een symbolic link vanuit /etc/rc2.d/worker
Als root kan ik het script uitvoeren en doet het wat ik wil, maar als de server opstart doet het niets. In /var/log/sys.log kan ik niks vinden.

Ik dacht dat het er aan lag dat linux per se wil dat ik het script zich 'als' service gedraagt, dus heb ik het script als volgt omgeschreven aan de hand van een werkend 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
#! /bin/sh
### BEGIN INIT INFO
# Provides:     scraper_workers
# Required-Start:   $syslog $remote_fs
# Required-Stop:    $syslog $remote_fs
# Should-Start:     $local_fs
# Should-Stop:      $local_fs
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    scraper_workers
# Description:      scraper_workers
### END INIT INFO


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/god
DAEMON_ARGS=-c /rails/scrapers_v1/current/config/development.god 
NAME=scraper_workers
DESC=scraper_workers
PIDFILE=/var/run/scraper_workers.pid

test -x $DAEMON || exit 0
test -x $DAEMONBOOTSTRAP || exit 0

set -e
echo $DAEMON_ARGS
case "$1" in
  start)
    echo -n "Starting $DESC: "
    touch $PIDFILE
    chown scraper_workers:scraper_workers $PIDFILE
    if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid scraper_workers:scraper_workers --exec $DAEMON -- $DAEMON_ARGS
    then
        echo "$NAME."
    else
        echo "failed"
    fi
    ;;
  stop)
    echo -n "Stopping $DESC: "
    if start-stop-daemon --stop --retry 10 --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
    then
        echo "$NAME."
    else
        echo "failed"
    fi
    rm -f $PIDFILE
    ;;

  restart|force-reload)
    ${0} stop
    ${0} start
    ;;
  *)
    echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0


Dit script doet helemaal niks, waarschijnlijk omdat er een syntax-fout in zit. Ik denk hier, maar weet eigenlijk niet hoe ik het anders moet doen...:
code:
1
DAEMON_ARGS=-c /rails/scrapers_v1/current/config/development.god


Anyhow, eigenlijk wil ik helemaal geen service starten, maar gewoon eenmalig een commando uitvoeren ;). Ik hoopte het met het service script mijn probleem op te lossen, maar wat mij betreft is het een overkill; ik hoef helemaal geen service ;), gewoon eenmalig een commando uitvoeren

Ik vraag me het volgende af:
1. Zit ik op de goede weg en kan ik in linux tijdens het opstarten een commando uitvoeren of moet ik altijd een service aanmaken?
2. Als ik op de goede weg zit, hoe kan ik dan makkelijk dit soort problemen 'debuggen'? In /var/log/sys.log kan ik niets vinden. Dat leek me juist de plek om foutmeldingen te vinden.
3. Ik heb het gevoel dat mijn probleem best simpel is, maar weet niet zo goed waar ik info kan vinden (in welke richting het moet zoeken). Kan iemand mij vertellen waar ik meer uitleg hierover kan vinden?

Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

CAPSLOCK2000

zie teletekst pagina 888

quick & dirty:
@reboot in je crontab
man 5 crontab

Overigens is jouw service-script oplossing ook mogelijk.
Draai je script eens met de hand en kijk wat voor foutmeldingen je krijgt.
set -x toevoegen kan debuggen makkelijker maken

[ Voor 64% gewijzigd door CAPSLOCK2000 op 11-10-2011 18:09 ]

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • MacGrumpy
  • Registratie: Februari 2010
  • Niet online
commando opnemen in /etc/rc.local? (hangt een beetje af van gebruikte distributie)

Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
MacGrumpy schreef op dinsdag 11 oktober 2011 @ 18:26:
commando opnemen in /etc/rc.local? (hangt een beetje af van gebruikte distributie)
Thanks, volgens mij was dat wat ik zocht!

Even een vraagje voor de zekerheid. rc.local wordt altijd als laatste gedraaid bij een boot VOORDAT je uberhaupt kan inloggen? M.a.w. het is toch hopelijk niet zoiets als de bashrc, dat pas gedraaid wordt als een user werkelijk inlogd? Ik bedoel het heeft niet zoveel zin om het commando in de rc.local te zetten en dan vervolgens elke keer bij een boot even moet inloggen ;)?

Acties:
  • 0 Henk 'm!

  • disheaver
  • Registratie: Augustus 2004
  • Niet online
klopt