我有一个cron
作业设置,假设要运行 wal-e backup-push 命令。如果通过命令行手动运行,该命令可以正常工作。当然是以用户postgres
身份运行。所以我设置了一个 cron 作业以在用户下运行它postgres
。它运行但不执行任何操作。cron 日志显示作业已完成。
我是否遗漏了某些显而易见的东西?任何建议或帮助都非常好。
0 2 * * * source ~/.bashrc && envdir /etc/wal-e.d/env wal-e backup-push /db01/pg
我也试过了。
0 2 * * * bash -l -c 'source ~/.bashrc && envdir /etc/wal-e.d/env wal-e backup-push /db01/pg'
Cron 日志消息:
CROND[31371]: (postgres) CMD (bash -l -c 'source ~/.bashrc && envdir /etc/wal-e.d/env wal-e backup-push /db01/pg')
CROND[31655]: (postgres) CMD (/usr/bin/envdir /etc/wal-e.d/env /usr/local/bin/wal-e backup-push /db01/pg)
答案1
这个命令是最终的解决方案。原来是我使用了错误的 envdir 路径。登录到 shell 后,我使用 which envdir 找到了正确的路径。
source ~/.bashrc; /usr/local/bin/envdir /etc/wal-e.d/env wal-e backup-push /db01/pg
答案2
不起作用。尝试了 cron 中的以下选项。
/usr/local/bin/envdir /etc/wal-ed/env /usr/local/bin/wal-e 备份推送 /pg/data
bash -c "/usr/local/bin/envdir /etc/wal-ed/env /usr/local/bin/wal-e 备份推送 /pg/data"
源 ~/.bashrc && envdir; /usr/local/bin/envdir /etc/wal-ed/env /usr/local/bin/wal-e 备份推送 /pg/data