Programm von cron ausführen lassen

Moderator: Moderatoren

Antworten
Jojo
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 48
Registriert: So, 22. Jul 2012 13:44

Programm von cron ausführen lassen

Beitrag 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.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Programm von cron ausführen lassen

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Programm von cron ausführen lassen

Beitrag von nightcrawler »

startet CRON nicht unter dem angemeldeten Benutzer, sondern dem SYSTEM User? Dann ist es evtl eine Berechtigungsfrage.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
paulberger
Rookie
Rookie
Beiträge: 10
Registriert: Mo, 02. Nov 2015 13:43

Re: Programm von cron ausführen lassen

Beitrag 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
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Programm von cron ausführen lassen

Beitrag von satmax »

Aufs blaue: ich würde bei use den ganzen Pfad (c:\ordner\xy...) angeben oder vorher einstellen.
Gruß
Markus
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Programm von cron ausführen lassen

Beitrag 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)
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Jojo
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 48
Registriert: So, 22. Jul 2012 13:44

Re: Programm von cron ausführen lassen

Beitrag 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
Antworten