[Ma-linux] Re: [Novalug] weekly cron job
Jay Hart
jhart at kevla.org
Fri Jan 4 09:54:27 EST 2008
With Karri's help, I think I have this problem mostly solved. I am concerned
about the use of the find command line :
find -type f -atime +12 | xargs ls -l
I know that I have 10 spam emails for the month of August in my spam
directory. If I use the above command, I either don't get any of the files
returned, or I get some subset of the 10, like 7.
If I change the command to:
find -type f -mtime +12 | xargs ls -l
I was able to pickup all 10 files.
What I am trying to accomplish with this command is to remove/delete from the
spam directory all spam emails (files) older then 12 days.
I believe I should run the mtime option as opposed to the atime option, but
I'm wondering if this will do for me what I want.
Any comments of suggestions?
Thanks again Karri, for helping me out last night.
Jay
> 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