我有一份每天要运行的命令列表。当我将其直接复制粘贴到终端并运行时,它可以正常工作,但当我将相同的命令复制粘贴到 cron 时,它不起作用。
这是命令
0 10 * * * commcare-export --query /home/administrator/Documents/commCareExcelFiles/case_data/1.xlsx --project projectX --output-format sql --output postgresql://user:pass12345@localhost:5432/dbname --username [email protected] --auth-mode apikey --password 0ecc3417ad8424ce5eac698092
我可以在 cron 日志中看到以下内容
(administrator) CMD ( commcare-export --query/home/administrator/Documents/commCareExcelFiles/case_data/1.xlsx --project projectX --output-format sql --output postgresql://user:pass12345@localhost:5432/dbname --username [email protected] --auth-mode apikey --password 0ecc3417ad8424ce5eac698092)
但是当我检查数据库时没有新的记录,除非它直接从终端运行。L
答案1
双重答案:
a) 检查您的本地邮箱。如果 cronjob 遇到错误(更准确地说:如果它在 stdout 或 stderr 上产生任何输出),它会通过邮件将其发送到本地root
帐户,该帐户应转发到您的个人邮件帐户。(如果没有,那么您应该修复它。)
b) 在您的条目commcare-export
中输入命令的绝对路径。不会继承您的设置。它只会在标准位置和中查找命令二进制文件。该命令不是标准的 Ubuntu 命令。它的二进制文件驻留在某个软件特定文件夹中的可能性并不大。如果您不知道它的绝对路径,请在命令正在运行的终端中输入该命令。crontab
cron
PATH
/bin
/usr/bin
commcare-export
which commcare-export
commcare-export