Postgresql 使用crontab运行Makefile

Postgresql 使用crontab运行Makefile,postgresql,makefile,crontab,osmosis,Postgresql,Makefile,Crontab,Osmosis,我是Ubuntu和编程新手。 我正在测试我在github上找到的一个程序,用于下载OSM数据并将其导入postgis。 当我从终端运行它时,它工作(url和名称是假的): 使用postgres用户 现在我需要每天运行这个命令。 所以我写了剧本: #!/bin/bash # go to the directory with Makefile cd /PCuserhome/directory/to/Makefile/ # run Makefile make all NAME=dbname URL='

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

使用postgres用户

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

#!/bin/bash
# go to the directory with Makefile
cd /PCuserhome/directory/to/Makefile/
# run Makefile
make all NAME=dbname URL='http://myurl'
当我从终端运行它时,它就工作了

因此,我通过以下方式将其添加到(postgres用户的)crontab中:

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
* * * * * env > /tmp/env.txt