在我的一个 cronjobs 中,我有一个长&&
链命令,在它的最后,我放了2>>/home/myparadise/public_html/wp-content/uploads/import/files/raytheon/raytheon_log_error.txt
- 表示我希望任何错误都进入文件raytheon_log_error.txt
cd /home/myparadise/public_html/wp-content/uploads/import/files/raytheon && wget "https://www.raytheonsystems.com/test" -O raytheon_direct.zip && unzip -q raytheon_direct.zip && rm -f raytheon_direct.zip && csvjoin --left -c "MANUFACTURER SKU,MPN" $(ls -Art ASH* | tail -n 1) /home/myparadise/public_html/wp-content/uploads/import/files/raytheon/raytheon2_multi_images_only.csv > raytheon_new_joined.csv && wget -q -O - "https://www.myparadise.com.au/wp-load.php?import_key=XXXX&import_id=111&action=trigger" 2>>/home/myparadise/public_html/wp-content/uploads/import/files/raytheon/raytheon_log_error.txt
但是,我从未收到该文件的错误。现在,我不能 100% 确定我期待什么错误,但有理由认为,由于最后一个命令从未执行过,因此在此过程中发生了一些故障。
(编辑:我随后发现该错误与权限相关:raytheon_direct.zip: Permission denied
-但是,问题仍然存在,因为我希望将来记录任何此类和所有错误。)
我该如何解决这个问题,以便如果其中一个&&
命令块失败,那么它将被记录为错误raytheon_log_error.txt
,包括具体原因?
您可以将链包装在子 shell 或命令组中,并重定向错误流:
或者
例如
或者(也许是为了更好的可读性)您可以将命令移动到脚本中。