Heroku Bash脚本在Crontab上不起作用



我真的看不出这里出了什么问题。我有一个数字海洋液滴,它每10分钟运行一次bash脚本,从我的数据库中获取一些Heroku蛞蝓的记录。这是我的脚本:

# /bin/sh
echo "Starting pull from postgres ..."
heroku pg:psql dbname --app app --command "COPY (select wallet from wallets where tokens_sent > 0) TO STDOUT WITH CSV" > wallets.csv

它获取所有钱包并将其保存在wallets.csv文件中。如果我在带有sh get_tokens.sh的终端中运行这个脚本,一切都很好!由于某种未知的原因,当我把这个脚本放在crontab中时,它不会从Heroku中提取数据。

我是root用户,root用户正在运行脚本。以下是文件权限:

4 -rwxr-xr-x 1 root root   782 Feb  3 18:18 get_tokens.sh
16 -rw-r--r-- 1 root root 12318 Feb  3 18:21 wallets.csv

这是我的crontab记录:

10 * * * * bash ~/get_tokens.sh >> logs.txt

我添加了logs.txt,看看是否会出现潜在的错误,但似乎没有什么问题。

有什么想法吗?提前感谢

您没有提供到wallets.csv:的绝对路径

# /bin/sh
echo "Starting pull from postgres ..."
heroku pg:psql dbname --command "COPY... TO STDOUT WITH CSV" > wallets.csv

该文件是相对于当前工作目录的,而当前工作目录可能不是您期望的目录。我建议你提供一个完整的路径:

# /bin/sh
echo "Starting pull from postgres ..."
heroku pg:psql dbname --command "COPY... TO STDOUT WITH CSV" > /path/to/wallets.csv

或者您可以将cd放入正确的目录:

# /bin/sh
echo "Starting pull from postgres ..."
cd /path/to/some/directory
heroku pg:psql dbname --command "COPY... TO STDOUT WITH CSV" > wallets.csv

请参阅cron执行作业时的"工作目录"是什么?在Unix上&Linux。

最新更新