开球命令是减less线?

我有这样的代码:

54 08 * * * /usr/local/bin/curator --dry-run --config /home/itadmin/.curator/curator.yml /home/itadmin/.curator/daily.yml 2>&1 | /usr/bin/tee -a /home/itadmin/.curator/logs.txt | /usr/bin/tee /home/itadmin/.curator/history.txt | if [ $(wc -l </home/itadmin/.curator/history.txt) -ge 2 ]; then mail -s 'Snapshot Status' [email protected]; fi 

我在做的是我发送cron的输出到logs.txt为历史目的,并发送相同的history.txt,其中if条件将工作。

其实cron的输出是这样的

 2017-05-17 08:33:01,395 INFO Preparing Action ID: 1, "snapshot" 2017-05-17 08:33:01,404 INFO Master-only flag detected. Connected to non-master node. Aborting. 

但是我在logs.txt是

 2017-05-17 08:54:01,427 INFO Preparing Action ID: 1, "snapshot" 

在history.txt文件我什么都没有

但是,这些工作正常,当我做删除if命令(即if [ $(wc -l </home/itadmin/.curator/history.txt) -ge 2 ]; then mail -s 'Snapshot Status' [email protected]; fi)

我不知道这是为什么发生?

谢谢

您需要将您的工作分成两个命令(如下所示),以便在开始检查其大小之前closureshistory.txt

发生什么事情是if语句在被截断之前但在被写入之前查看文件的大小。 这意味着stream水线的最后一个组件就退出了,之前的一切都是用SIGPIPE

 54 08 * * * /usr/local/bin/curator --dry-run --config /home/itadmin/.curator/curator.yml /home/itadmin/.curator/daily.yml 2>&1 | /usr/bin/tee -a /home/itadmin/.curator/logs.txt > /home/itadmin/.curator/history.txt; if [ $(wc -l </home/itadmin/.curator/history.txt) -ge 2 ]; then mail -s 'Snapshot Status' [email protected] < /home/itadmin/.curator/history.txt; fi 

我没有意识到这样做,而不使用中间文件。 如果body不为空,则从命令行发送邮件的答案build议使用ifne实用程序来处理空/非空input的特殊情况。