[Ma-linux] Re: [Novalug] weekly cron job
Jay Hart
jhart at kevla.org
Thu Jan 3 20:37:53 EST 2008
John,
Your info below was great, doing an 'ls /var/spool/cron/lastrun showed me:
email:/var/spool/cron/lastrun # ls -l
total 0
-rw-r--r-- 1 root root 0 Jan 3 01:00 cron.daily
-rw-r--r-- 1 root root 0 Dec 30 16:30 cron.weekly
Ok, so cron.weekly ran on Dec 30. I have a script below, which Don Jr. has
helped me with.
The script should write out a message to a file called spam-learn located at
/home/user-name which should state what date the script ran.
Only problem is that the spam-learn file doesn't have any information since
Dec 9th, which is when I changed from an old script, to the script below.
Also, the script should delete any spam emails in a particular folder when
they are older then 12 days. But, when I look in the designated spame folder,
I still have (all the) spam emails I placed there since Aug 24, 2007.
I need some help figuring out why this is not working. Also, if I run
find -type f -atime +12 | xargs ls -l
I am not getting all files that meet this criteria. For example, in Aug 2007
I stored 10 spam emails, running this command only shows I received 7 spam
emails in Aug.
Jay
----------begin script (this line not included in file)
#!/bin/sh
PATH=/usr/local/bin:/bin:/usr/bin
set -e
function dothejob() {
WHO="$1"
HOME=/home/${WHO}
SPAMDIR="${HOME}/MailDir/$2"
CD $HOME
find ${SPAMDIR} -type f -print > /tmp/spamfiles
chown ${WHO} /tmp/spamfiles
# --pidfile /dev/null so it always starts;
# sa-learn isn't really a daemon,
# but we want to start it like one so that
# it runs with the correct userid.
/sbin/start-stop-daemon -start --pidfile /dev/null \
--startas /usr/bin/sa-learn --oknodo --chuid $WHO \
-- --spam -f /tmp/spamfiles
# log that we did it.
echo -e "sa-learn ran on \n$(date)" >> ${HOME}/spam-learn
# Give owner to user to handle the case where 'spam-learn' was deleted
chown $WHO ${HOME}/spam-learn || /bin/true
chmod rw,r,r ${HOME}/spam-learn || /bin/true
# same usage as above of start-stop-daemon is going on here
/sbin/start-stop-daemon --start --pidfile /dev/null \
--startas /bin/sh \
--oknodo --chuid $WHO \
-- -c "find ${SPAMDIR} -type f -atime +12 | xargs rm -f"
echo -e "deleted files older than 12 days" >> ${HOME}/spam-learn
date >> ${HOME}/spam-learn
rm /tmp/spamfiles
# find ${SPAMDIR} -type f -atime +12 | xargs rm -f
# echo -e "deleted files older than 12 days" >> ${HOME}/spam-learn
}
dothejob "jhart" ".knownspam/cur"
dothejob "llumbert" ".spam/cur"
exit 0 # tell cron that everything went OK.
#-----------------------end script
> "Jay Hart" <jhart at kevla.org> writes:
>
>> I want this to run as root, so I did in fact drop it in /etc/cron.weekly.
>>
>> Since I rebooted the box, its been five days, so I will wait the two more
>> days
>> I think need to pass prior to this script running.
>>
>> File is located in /etc/cron.weekly, has executable permissions, and is
>> owned
>> by root.
>
> The /etc/cron.$TIMEPERIOD scripts are run by a script called
> 'run-crons' which is called periodically (every 10 or 15 minutes,
> usually) out of /etc/crontab.
>
> On the SLES systems at $WORK, run-crons lives in /usr/lib/cron; on the
> Gentoo boxes at home, it's in /usr/sbin -- locate is probably your
> friend.
>
> I suspect if you do a 'rm /var/spool/cron/lastrun/*' you'll see those
> longer period cronjobs execute in short order.
>
> (Now, if you're running anacron, all bets are off, but start by
> looking in /etc/crontab and you'll probably be able to puzzle it out.)
>
> john.
> --
> [The Clipper Chip scheme] "is a focal point for the distrust of goverment."
> - Clinton Brooks, NSA scientist who led the Clipper Chip project,
> _Wall_Street_Journal_ interview, 02/22/94. [No kidding, Clint.]
>
More information about the Novalug
mailing list