【问题标题】:Run Makefile with crontab使用 crontab 运行 Makefile
【发布时间】:2016-07-22 15:49:21
【问题描述】:

我是 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

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

【问题讨论】:

    标签: postgresql makefile crontab osmosis


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 2022-01-15
      • 2014-07-17
      • 2010-12-04
      • 2016-06-03
      • 2017-08-31
      • 2018-05-05
      • 2021-09-10
      相关资源
      最近更新 更多