运行 带有 crontab 的 Makefile

Run Makefile with crontab

我是 Ubuntu 和编程方面的新手。 我正在测试我在 github 上找到的一个程序,用于下载 OSM 数据并将其导入 postgis。 当我从终端 运行 它时它起作用(url 并且名字是假的):

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

使用 postgres 用户。

现在我每天都需要运行这个命令。 所以我写了那个脚本:

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

当我从终端 运行 它时它工作。

所以我以这种方式将它添加到 crontab(postgres 用户的)中:

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

它创建了数据库,但可能在 运行 宁渗透选择中失败(渗透在所有用户的路径中)。 有解决这个问题的想法吗?谢谢!

crontab 命令仅使用最少的环境变量执行,即

PATH=/usr/bin:/bin(无论如何在 debian 上),

因此,如果您依赖 $PATH 中的程序,它将失败。 考虑指定渗透程序的绝对路径,无论它是从哪里调用的。

或者您可以在脚本中更改 $PATH 本身

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

p.s.: 您可以通过添加一个简单的 cron 作业来检查环境

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