Problemen met rc.d script (FreeBSD)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Le Enfant!
  • Registratie: Juli 2012
  • Laatst online: 23:00
Hallo,

Ik heb me de afgelopen dagen bezig gehouden met het schrijven van een script dat een .py bestand oproept tijdens de start-up (\etc\rc.d). Alleen tijdens de start-up gebeurt er weinig met wat er in het script staat. Nu had ik dit wel verwacht, want dit is de eerste keer dat ik een script heb geschreven in een Unix-omgeving.

Volgende is wat er in het script staat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh 

. /etc/rc.subr

name="dump"
rcvar="dump_enable"

${name}_chdir="/usr/local/bin/dump"

start_cmd="${name}_start"
stop_cmd="."

load_rc_config $name


dump_start ()
{
python "/usr/local/bin/dump/dump.py" start
}

run_rc_command "$1"


De bedoeling van het script is dat het script:
1) een cd doet naar de map waar het bestand staat (zie die ${name}_chdir="/usr/local/bin/dump")
2) Aan de hand van Python het .py bestand opent. (python "/usr/local/bin/dump/dump.py" start)

Ik heb in het script naast #!bin/sh de -x toegevoegd, zodoende dat ik een log krijg met wat er precies gebeurd. Dit zijn de twee dingen die me opvallen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
 root@dump:/ # /etc/rc.d/dump start
+ 'dump_chdir=/usr/local/bin/dump'
/etc/rc.d/dump: dump_chdir=/usr/local/bin/dump: not found -> de map wordt niet gevonden
+ _run_rc_doit 'dump_start '
+ debug 'run_rc_command: doit: dump_start '
+ [ -x /usr/bin/logger ]
+ logger '/etc/rc.d/dump: DEBUG: run_rc_command: doit: dump_start '
+ echo '/etc/rc.d/dump: DEBUG: run_rc_command: doit: dump_start '
/etc/rc.d/dump: DEBUG: run_rc_command: doit: dump_start'
+ eval 'dump_start'
+ dump_start
+ python /usr/local/bin/dump/dump.py start
python: can't open file '/usr/local/bin/dump/dump.py': [Errno 2] No such file or directory -> het bestand kan niet worden gevonden

Er is iets fout gelopen waardoor hij de map niet vindt, daardoor vind Python ook niet het bestand (omdat hij dus niet in de juiste map zit). Ik heb al kunnen bevestigen dat het geen typo is.

In het begin had ik in het veld waar 'python "/usr/local/bin/dump/dump.py" start' staat, ook het commando 'cd /usr/local/bin/dump'. Bij de eerste keer troubleshouten had ik gevonden op het internet dat een cd niet werkt in een .sh script (of toch niet rechtstreeks). Dat komt omdat het script tijdelijk in een andere shell wordt uitgevoerd dan waar een cd in een terminal uitgevoerd wordt.

Na wat zoeken heb ik dus de '${name}_chdir=' gevonden.Maar dat blijkt dus ook niet te werken.
Ik heb ook ergens gelezen dat een cd ook mogelijk kan gemaakt worden door start_cmd="cd /usr/local/bin/dump" of command="cd /usr/local/bin/dump", maar veel doet dit ook niet in mijn script.

Heeft er iemand hier ervaring met dergelijke scripts en die weet waar ik precies moet zoeken om alsnog bovenstaande werkende te krijgen? Google kan me helaas niet echt helpen (vind ietwat te veel info die soms niets te maken heeft met mijn use case) en ook de man pagina's van FreeBSD brengt geen duidelijkheid.

Alle reacties


Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:30

Hero of Time

Moderator LNX

There is only one Legend

Ik kom iig https://unix.stackexchang...reate-a-freebsd-rc-script tegen die het iets anders aanpakt dan wat je nu hebt. Had je dit zelf ook al gevonden?

Commandline FTW | Tweakt met mate