1

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

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

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

4

1 回答 1

3

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

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

所以如果你依赖于你的程序$PATH,它会失败。考虑指定渗透程序的绝对路径,无论它是从哪里调用的。

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

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

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

* * * * * env > /tmp/env.txt
于 2016-07-22T16:08:43.957 回答