第一個腳本每天上午 11 點運行一次,并通過“成功”訊息通知一切正常。
if [ $Status == "200" ]; then
echo "success"
else
echo "error"
fi
第二個腳本每 30 分鐘運行一次,除非出現錯誤,否則不會列印任何內容。基本上,它會每 30 分鐘檢查一次是否一切正常,并且只有在出現任何問題時才通知我錯誤。
if [ $Status != "200" ]; then
echo "error"
fi
兩個腳本的代碼幾乎完全相同。但是我使用了 2 個不同的腳本,因為我在不同的時間想要不同的輸出。那么有沒有辦法將這兩個腳本結合起來呢?
更清楚地說,如果可能的話,我想要一個腳本,它可以在每天上午 11 點發送成功訊息,同時每 30 分鐘運行一次,而不會一次又一次地發送成功訊息,然后只在出現任何問題時發送錯誤訊息。
在 crontab 中是這樣的:
0 11 * * * /home/username/script1.sh
*/30 * * * * /home/username/script2.sh
uj5u.com熱心網友回復:
讓您的腳本每 30 分鐘運行一次。成功后,在輸出成功之前檢查是否是上午 11 點。
if [ $Status == "200" ]; then
if [ $(date %H%M) == "1100" ]; then
echo "success"
fi
else
echo "error"
fi
注意:這會準確檢查上午 11:00。如果您的腳本可能需要超過 1 分鐘的時間才能達到這一點,請在開始時將時間保存在某處,time="$(date %H%M)"然后再進行檢查if [ "$time" == "1100" ]。
或者,如果您想保留在腳本之外表現不同的實際時間,您可以引入僅在上午 11 點運行時(或以一種方式)設定的引數,而不是(或以另一種方式)在其他運行。
這要求您仍然有多個 cron 作業,但對同一腳本使用不同的引數。
0 11 * * * /home/username/script.sh yes
30 11 * * * /home/username/script.sh no
*/30 0-10,12-23 * * * /home/username/script.sh no
在腳本中,您需要檢查提供的引數。
printsuccess="$1"
if [ $Status == "200" ]; then
if [ $printsuccess == "yes" ]; then
echo "success"
fi
else
echo "error"
fi
uj5u.com熱心網友回復:
兩個腳本的代碼幾乎完全相同。但是我使用了 2 個不同的腳本,因為我在不同的時間想要不同的輸出。那么有沒有辦法將這兩個腳本結合起來呢?
您應該將獲取狀態代碼的所有復雜性放在一個腳本中。如果需要,請在包裝腳本中獲取此源:. ~/get-code.bash。
而不是包裝腳本,我會這樣做:
0,30 0-10,12-23 * * * ~/get-code || echo error
30 11 * * * ~/get-code || echo error
0 11 * * * if ~/get-code; then echo success; else echo error; fi
要回傳基于 的成功或失敗Status,請將其放在 的末尾~/get-code:
if [ "$Status" = 200 ]; then
exit 0
else
exit 1
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432236.html
