Mailx - Concurrency and State of Mail [message #221204] |
Sun, 25 February 2007 06:32 |
Sumit_Fundoo
Messages: 1 Registered: February 2007 Location: Noida
|
Junior Member |
|
|
Hi friends ,
I am in a serious trouble with concurrency issue while using mailx. I have a shell script which reads all the emails of a unix user account and create a copy (another mbox for processing and archive purpose). This script works fine for 99.99% of the time but sometime it start creating multiple copies of the same email during creation of another temp mail box copy and subsequently results in large repetitive insert database calls.
This email loading shell script is a regular cron job which runs after every 30 minutes. My doubts goes to somebody running mailx command or reading email of the same user account while Email Loader is running. Am i correct with my doubt ? Is there anyways to explicit lock the unix user mailbox while my Email Loader program is running ?
I am also providing code snippest here -
# Functions for checking whether there is any emails in user mailbox - returns 0 in variable mailstat if there are new emails in mailbox otherwise 1.
check_mailbox()
{
if [ "$mailfile" = "" ]; then
mailx -e
else
#mailx -e -f $mailfile
if [ -f "$mailfile" ]; then
mailstat=0
else
mailstat=1
fi
fi
mailstat=$?
} # check_mailbox
#### main Block which is running and creating a copy of all mails in users mailbox.
------------
/* mail file is always blank as we never pass any argument to script.*/
mailfile="$1"
echo "Test to see if there is mail. Exit status will be 0 if there is." >> $logfile
check_mailbox
if [ $mailstat -eq 1 ]; then
echo "No mails exist in mailbox" >> $logfile
exit 1
fi
echo "Archiving Mailbox." >> $logfile
touch ${mailboxarchive}
while ( [ $mailstat -eq 0 ] )
do
echo "save ${mailboxarchive}
quit" > $exmailfl
if [ "empty$mailfile" = "empty" ]; then
mailx < $exmailfl > $outfile
else
if [ ! -f $mailfile ]; then
# all done
break
fi
mailx -f $mailfile < $exmailfl > $outfile
fi
check_mailbox
done
anybody have any clue on where i am missing ? any help bros
looking forward for some unix experts help (i m a j2ee guy and don't have that depth in Unix schell scripting)
Thx in well advance.
Sumit
|
|
|