I have an alert script that I am trying to keep from spamming me so I'd like to place a condition that if an alert has been sent within, say the last hour, to not send another alert. Now I have a cron job that checks the condition every minute because I need to be alerted quickly when the condition is met but I don't need to get the email every munite until I get the issue under control. What is the best way to compare time in bash to accomplish this?
By far the easiest is to store time stamps as modification times of dummy files. GNU
date commands can set/get these times and perform date calculations. Bash has tests to check whether a file is newer than (
-nt) or older than (
For example, to only send a notification if the last notification was more than an hour ago:
touch -d '-1 hour' limit if [ limit -nt last_notification ]; then #send notification... touch last_notification fi
if test file1 -nt file2; then # file1 is newer than file2 fi
EDIT: If you want to know when an event occurred, you can use "touch" to create a file which you can later compare using "test".