首页 > 解决方案 > Cron 作业 - 通过电子邮件发送的导出文件为空白

问题描述

我收到了来自以下 CRON 作业的电子邮件,但附加了一个空白文件。我检查了 /home/XXXXXX/public_html/tmp/ 目录,并在该 /tmp/ 文件夹中创建了一个好的 tqhsa_hikashop_order.txt 文件,但附加到我收到的电子邮件的那个是空的。

mysql --database=XXXXXXXX_jml_6UCHadruwR8veju3 -u XXXXXXXX_8eh6Nu --password=fRa6r7wRerEtuzud -B -e "SELECT order_number, order_created, order_invoice_number, order_full_price, order_discount_code, order_discount_price, order_payment_method, order_payment_price FROM tqhsa_hikashop_order;" > /home/XXXXXXXX/public_html/tmp/tqhsa_hikashop_order.txt | mail -s "Daily Discount Table Dump" -a /home/XXXXXXXX/public_html/tmp/tqhsa_hikashop_order.txt luke@example.com

任何想法为什么没有附加好的文本文件?

标签: shellcron-task

解决方案


您需要确保第一个命令在运行第二个命令之前完成,以便该文件存在于磁盘上。

所以基本上|用 a替换&&

mysql \
  --database=XXXXXXXX_jml_6UCHadruwR8veju3 \
  -u XXXXXXXX_8eh6Nu \
  --password=fRa6r7wRerEtuzud \
  -B \
  -e "SELECT order_number, order_created, order_invoice_number, order_full_price, order_discount_code, order_discount_price, order_payment_method, order_payment_price FROM tqhsa_hikashop_order;" > /home/XXXXXXXX/public_html/tmp/tqhsa_hikashop_order.txt \
&& \
mail \
  -s "Daily Discount Table Dump" \
  -a /home/XXXXXXXX/public_html/tmp/tqhsa_hikashop_order.txt luke@example.com

用一个例子来说明:

myuser@myshell:~ $ echo "testing" > testy.txt | cat testy.txt
cat: testy.txt: No such file or directory

myuser@myshell:~ $ echo "testing" > testy.txt && cat testy.txt 
testing

推荐阅读