运行 带有 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
我是 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