2016-07-22 14 views
0

Ich bin neu in Ubuntu und Programmierung. Ich teste ein Programm, das ich auf github gefunden habe, um OSM-Daten in Postgis herunterzuladen und zu importieren. Es funktioniert, wenn ich es von Terminal laufen (URL und Name sind fake):Run Makefile mit Crontab

make all NAME=dbname URL='http://myurl' 

Postgres Benutzer verwenden.

Jetzt muss ich diesen Befehl jeden Tag ausführen. Also schrieb ich das Drehbuch:

#!/bin/bash 
# go to the directory with Makefile 
cd /PCuserhome/directory/to/Makefile/ 
# run Makefile 
make all NAME=dbname URL='http://myurl' 

und es funktioniert, wenn ich es vom Terminal laufen.

So habe ich hinzugefügt, um es (von Postgres-Benutzer) auf diese Weise crontab:

0,15,30,45 * * * * /PCuserhome/myscript.sh 

Sie den db erstellen, aber wahrscheinlich in Laufe Osmose Auswahl fail (Osmose ist für alle Benutzer auf dem Weg). Irgendeine Idee, das zu lösen? Vielen Dank!

Antwort

0

crontab Befehle werden nur mit minimalen Umgebungsvariablen ausgeführt, das heißt

PATH=/usr/bin:/bin (auf debian sowieso),

also, wenn Sie auf Programme setzen, die in Ihrem $PATH sind, wird es scheitern. Sie können einen absoluten Pfad zum Osmoseprogramm angeben, von wo auch immer es aufgerufen wird.

Alternativ können Sie $PATH sich in Ihrem Skript ändern

export PATH="/my/bin:$PATH" 

P. S .: Sie die Umwelt durch das Hinzufügen eines einfachen cron-Job überprüfen

* * * * * env > /tmp/env.txt