Cron
tee 命令正在減少線條?
我有這樣的程式碼:
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' xyz@abc.com; 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' xyz@abc.com; fi)
.我不知道為什麼會這樣?
謝謝
您需要將作業拆分為兩個命令(如下所示),以便
history.txt
在開始檢查其大小之前將其關閉。發生的情況是,該
if
語句在文件被截斷之後但在被寫入之前查看文件的大小。這意味著管道的最後一個組件剛剛退出,並且之前的所有內容都以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' xyz@abc.com < /home/itadmin/.curator/history.txt; fi
我不知道不使用中間文件的方法。如果正文不為空,則從命令行發送郵件的答案建議將該
ifne
實用程序用於空/非空輸入的特殊情況。