0

I'm not an expert in writing shell scripts but also I'm looking for a very specific solution.

OS: CentOS release 5.2 (Final)

I've a Java standalone which keeps writing (all System.out.println) to a log file. For some unknown reason, this Java standalone stops working at some point of time in my server and eventually logs writing also stops working.

I want to have a script which checks the last modified date & time of the log file with current date & time in the server. If the time difference exceeds more than 5 minutes, I want to send an email immediately to my recipients list. This way I'll come to know when this Java standalone has stopped working.

I'll move this script to crontab and make it run for every 1 minute, so that this whole process is automated.

Log file location: /usr/local/logs/standalone.log

1
  • 1
    this is more likely to get a good answer on stackoverflow.com
    – cpbills
    May 13, 2010 at 6:07

1 Answer 1

2

however, i was bored... something like:

#!/bin/sh

SUBJECT="blah is more than 5 minutes old!"
EMAIL="[email protected]"
MSG="/tmp/emailmessage"

MOD=`stat --printf=%Y $1`
NOW=`date +%s`
DIFF=$(($NOW-$MOD))
if [ $DIFF > 300 ]; then
    echo "$1 is more than 5 minutes old!" > $MSG
    mail -s "$SUBJECT" "$EMAIL" < $MSG
fi
3
  • Where is the file location /usr/local/logs/standalone.log passed to in the above script?
    – Gnanam
    May 13, 2010 at 6:46
  • @Gnanam: It's the first command line argument ($1).
    – vwegert
    May 13, 2010 at 7:53
  • i think $DIFF > 300 should be $DIFF -gt 300 i was a little tired when writing this
    – cpbills
    May 13, 2010 at 16:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .