[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