0
我是一個系統管理員,我經常有一種情況,我有一個腳本或命令,生成大量的輸出,我只想通過電子郵件發送到我如果命令失敗。編寫一個運行命令的腳本非常容易,收集輸出並在命令失敗時通過電子郵件發送它,但是我想我應該能夠編寫一個命令:bash腳本接受登錄標準輸入和電子郵件日誌如果輸入過程失敗
1)接受stdin上的日誌信息 2)等待輸入過程退出並查看它的退出狀態是否爲 3a)如果輸入過程乾淨地退出,將日誌輸入附加到正常日誌文件中(如果輸入過程失敗),將日誌輸入附加到正常日誌併發送給我一封電子郵件。
它看起來像這樣的命令行:
something_important | mailonfail.sh [email protected] /var/log/normal_log
這將使得它可以很方便的的crontab使用。
我無法弄清楚如何讓腳本等待寫入過程並評估過程如何退出。
只是要exatra清楚,這裏是我如何與一個包裝做到這一點:
#! /bin/bash
something_important > output
ERR=$!
if [ "$ERR" -ne "0" ] ; then
cat something_important | mail -s "something_important failed" [email protected]
fi
cat something_important >> /var/log/normal_log
再次聲明,這不是我想要的,我想要寫一個腳本,並管道命令進去。
這有道理嗎?我會怎麼做?我錯過了什麼嗎?
謝謝大家! -Dylan
你是一個可愛的人,這是一個可愛的答案,但是這是我已經知道如何做的事。無論如何,我給你+1。 – pileofrogs
對不起,我似乎沒有完全理解你的問題......是關於如何等待給定時間的一個命令(如果它太慢就殺死它)?我不確定「腳本和管道命令」嗎? – bufh
我希望能夠執行「./some_command | myscript.sh」並讓myscript.sh知道some_command退出是否正常。 – pileofrogs