Seite 1 von 1

Programm von cron ausführen lassen

Verfasst: Di, 10. Nov 2015 16:05
von Jojo
Hallo zusammen,

ich habe ein (sehr) kleines Programm in FlagShip geschrieben, welches ich mit dem Cron täglich ausführen lassen möchte.

Das Programm...

Code: Alles auswählen

USE meinedbf
meinedbf->inuse = '1'
CLOSE meinedbf
Damit soll in der meinedbf.dbf (die auch nur eine Zeile enthält) der Wert unter INUSE auf 1 gesetzt werden.

Wenn ich das Progrämmchen auf der Konsole aufrufe funktioniert es und der Wert bei Inuse wird auf 1 geändert.
Wenn ich es durch den Cron aufrufe meldet er einen Fehler "Run-time error 342 in meinedbf(2) Illegal alias meinedbf".

Was macht cron anders als ich an der Konsole?

Grüße
Jojo

P.S.: Für alle, die ein FlagShip-Programm durch den Cron ausführen lassen wollen...Man muss mit dem Schalter -io=b kompillieren.

Re: Programm von cron ausführen lassen

Verfasst: Di, 10. Nov 2015 16:18
von Jan
Eventuell wird der Alias dort anders dargestellt? Vielelicht einfach mal den Alasi nach dem Use in eine Variable lesen, und dann anhand dieses Wertes schreiben. Also z. B.:

Code: Alles auswählen

Use meinedbf New
cAlias := Alias()
(cAlias)->inuse := 1
(cAlias)->(DbClose())
Aufs Blaue. Ohne spezielle Syntax von FS zu kennen.

Jan

Re: Programm von cron ausführen lassen

Verfasst: Di, 10. Nov 2015 17:24
von nightcrawler
startet CRON nicht unter dem angemeldeten Benutzer, sondern dem SYSTEM User? Dann ist es evtl eine Berechtigungsfrage.

Re: Programm von cron ausführen lassen

Verfasst: Do, 12. Nov 2015 10:19
von paulberger
Man sollte stets prüfen, ob USE nicht fehlgeschlagen ist:

Code: Alles auswählen

USE meinedbf
if !used()
   * ? "meinedbf.dbf konnte nicht geöffnet werden"  // <-- nicht unter cron!
   // unter cron, schreibe z.B. in die Datei "error.log" :
   memowrit("error.log", dtoc(date()) + " " + time() + " meinedbf.dbf konnte nicht geöffnet werden")
   QUIT
endif
REPLACE inuse with "1"  // falls das Feld 'inuse' Charakter ist, sonst ohne Anführungszeichen
USE
QUIT
Kompiliere mit dem -io=b Schalter. Prüfe auch Zugriffsrechte auf die Datenbank.
Paul

Re: Programm von cron ausführen lassen

Verfasst: Do, 12. Nov 2015 11:15
von satmax
Aufs blaue: ich würde bei use den ganzen Pfad (c:\ordner\xy...) angeben oder vorher einstellen.

Re: Programm von cron ausführen lassen

Verfasst: Do, 12. Nov 2015 11:39
von georg
Wenn das Programm unter einem anderen Benutzer ausgeführt wird, stimmt möglicherweise auch das Verzeichnis nicht, in dem das Programm ausgeführt wird, d.h. der Programmaufruf kann aus dem korrekten Verzeichnis erfolgen, das aktuelle Verzeichnis ist aber ein anderes, und wenn die Datei nicht gefunden wird, kann es diesen Fehler geben. (Zusammenfassung der vorhergehenden Hinweise)

Re: Programm von cron ausführen lassen

Verfasst: Sa, 21. Nov 2015 12:49
von Jojo
Hallo zusammen,

ich hatte die vom Cron aufzurufende Datei in den Ordner wo die Daten liegen geschoben.
Dachte dadurch bin ich auf der sicheren Seite :roll:

Der Tipp den ganzen Ordner anzugeben hats gebracht.
Mit der Angabe des Pfades nach dem USE klappt es. :D

Danke an alle für die Tipps.

Grüße
Jojo