我真的看不出这里出了什么问题。我有一个数字海洋液滴,它每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。